首页 > 代码库 > [IOS学习笔记]KVO
[IOS学习笔记]KVO
//属性@property(nonatomic) BOOL isFinished;
//注册监听 [self addObserver:self forKeyPath:@"isFinished" options:0 context:NULL];
//响应变更事件- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ if ([keyPath isEqualToString:@"isFinished"]) { NSLog(@"changeeddd"); } else { [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; }}
//变更属性数值[button addTarget:self action:@selector(changeFinished:) forControlEvents:UIControlEventTouchUpInside];-(void)changeFinished:(id)sender {//自动通知 [self setValue:[NSNumber numberWithBool:YES] forKey:@"isFinished"];}
注册监听器参数 options
NSKeyValueObservingOptionNew 表示属性未改变?之前的值;
NSKeyValueObservingOptionOld 表示属性改变后的值;?
移除观察者:
[subject removeObserver:observer forKeyPath:@"name"];
KVO相当于JAVA:
account.setListener(new MyListener(){
inspector.method();
});
但是不需要和JAVA一样声明一个MyListener接口,也不需要在account类中新建一个setListeber(MyListener listener);的方法,所以更灵活,但是变更属性时不能简单赋值!
[IOS学习笔记]KVO
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。