KVO
作用
监听对象的某个属性,如果发生修改会调用observeValueForKeyPath方法
使用步骤
-
增加监听器
self.shop=[[Shop alloc]init]; [self.shop addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew| NSKeyValueObservingOptionOld | NSKeyValueObservingOptionPrior | NSKeyValueObservingOptionInitial context:@"ttt"];
代码解释与说明: 使用self监听shop对象的name属性
options的四个参数:
NSKeyValueObservingOptionInitial(记录初始值)无论name属性是否发生修改都会调用监听方法
其他的属性都是调用shop的name的set方法才会调用监听方法 -
实现监听方法
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context { NSLog(@"监听%@对象的%@属性",[object class],keyPath); NSLog(@"%@%@",change,context); }
方法说明:
该方法在object里面声明,任何对象都可实现 - 程序结束移除,不再监听
方法说明:移除监听-(void)dealloc { [self.shop removeObserver:self forKeyPath:@"name"]; }