IOS 설계 모드의 4: 관찰자 모드
6276 단어 관찰자 모드
KVO
Key-Value Observing은 지정된 객체의 속성이 수정되면 객체가 공지를 받는 메커니즘을 제공합니다.KVO는 관찰할 객체의 등록 정보를 수정할 때마다 해당 관찰자에게 자동으로 알립니다.
모델의 정의:
@interface StockData : NSObject {
NSString * stockName;
float price;
}
@end
@implementation StockData
@end
controller에서 사용하는데 전편에서 뭐라고 했는지 기억나세요?여기는 모형에게 내가 너의 업데이트 방송을 청취할 것이라고 말하는 것과 같다
- (void)viewDidLoad
{
[super viewDidLoad];
stockForKVO = [[StockData alloc] init];
[stockForKVO setValue:@"searph" forKey:@"stockName"];
[stockForKVO setValue:@"10.0" forKey:@"price"];
[stockForKVO addObserver:self forKeyPath:@"price" options:NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld context:NULL];
myLabel = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 100, 30 )];
myLabel.textColor = [UIColor redColor];
myLabel.text = [stockForKVO valueForKey:@"price"];
[self.view addSubview:myLabel];
UIButton * b = [UIButton buttonWithType:UIButtonTypeRoundedRect];
b.frame = CGRectMake(0, 0, 100, 30);
[b addTarget:self action:@selector(buttonAction) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:b];
}
사용자는 View의 button 호출 컨트롤러의 action을 누르면 모델의 데이터를 변경합니다
-(void) buttonAction
{
[stockForKVO setValue:@"20.0" forKey:@"price"];
}
컨트롤러가 실현해야 할 리셋은 방송을 받은 후 내가 무슨 일을 해야 하는지에 해당한다
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if([keyPath isEqualToString:@"price"])
{
myLabel.text = [stockForKVO valueForKey:@"price"];
}
}
보기 dealloc는 관찰을 취소해야 합니다
- (void)dealloc
{
[super dealloc];
[stockForKVO removeObserver:self forKeyPath:@"price"];
[stockForKVO release];
}
2. Notification
알림 사용은 매우 간단합니다.
우선 리셋을 정의한다. 즉, 내가 무슨 일을 해야 하는지 통지하는 것이다.
- (void)callBack{
NSLog(@" !");
}
그 다음에 등록 통지, 즉 통지 센터에 내가 어떤 통지에 흥미가 있는지 알려준다.
[[NSNotificationCenter defaultCenter] addObserver: self
selector: @selector(callBack)
name: @"A "
object: nil];
셋째, 프로그램 어느 곳에서든 알림을 보낼 수 있다
- (void)getNotofocation{
NSLog(@"get it.");
//
[[NSNotificationCenter defaultCenter] postNotificationName:@"A " object:self];
}
물론 필요할 때 등록 통지를 취소할 수도 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 관찰자 모드 쉽게 파악정의: 객체 간에 일대다 관계가 있을 때 관찰자 모드(Observer Pattern)를 사용합니다.예를 들어 대상이 수정되면 의존 대상을 자동으로 알려준다. 특징: 1. 관찰자와 피관찰자는 추상적인 결합이다. 2. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.