标签:
监听对象的某个属性,如果发生修改会调用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"];
}
方法说明:移除监听标签:
原文地址:http://www.cnblogs.com/JavaTWW/p/5401977.html