KVO 키 감청 사례
KVO, 즉 키 - Value Observing 은 지정 한 대상 의 속성 이 수정 되면 대상 이 알림 을 받 는 메커니즘 을 제공 합 니 다.쉽게 말 하면 지 정 된 관찰 대상 의 속성 이 수 정 될 때마다 KVO 는 해당 관찰자 에 게 자동 으로 알 린 다 는 것 이다.KVO 는 사실 '관찰자' 디자인 모델 의 응용 이기 도 한다.나의 견 해 는 이런 모델 은 두 가지 유형 간 의 결합, 특히 업무 논리 와 보기 제어 라 는 두 가지 기능 의 결합 에 유리 하 다 는 것 이다.
모형.
.h
#import
@interface Person : NSObject
@property(nonatomic,copy)NSString *name;
@property(nonatomic,assign)NSInteger age;
@end
컨트롤 러
- (void)viewDidLoad {
[super viewDidLoad];
self.person = [[Person alloc]init];
self.person.name = @" ";
self.person.age = 18;
[self.person addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew context:nil];
//UILabel
self.ageLabel = [[UILabel alloc]init];
self.ageLabel.frame = CGRectMake(10, 200, 300, 30);
self.ageLabel.text = [NSString stringWithFormat:@"%@ : %ld ",self.person.name,self.person.age];
[self.view addSubview:self.ageLabel];
//
UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(50, 300, 200, 30)];
[btn setTitle:@" " forState:UIControlStateNormal];
btn.backgroundColor = [UIColor redColor];
[btn addTarget:self action:@selector(clickBtn) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
-(void)clickBtn{
self.person.age += 5;
}
/* KVO function, object keyPath , */
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"age"] && object == self.person) {
self.ageLabel.text = [NSString stringWithFormat:@"%@ : %ld", self.person.name, self.person.age];
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.