KVO (Key Value Observing) 键值监听

:用于数据组件的状态数据发生改变时,试图组建能动态更新自己

iOS应用通常会把应用程序组建分开为

数据模型组件:负责维护应用程序的状态数据

试图组件:负责显示数据模型组建内部的状态数据

addObserver:forKeyPath:options:context:注册一个监听器用于监听指定的Key路径

removeObserver:forKeyPath:为Key路径删除指定的监听器

removeObserver:forKeyPath:context:为Key路径删除指定的监听器 只是多了一个context参数

context 填入修改时想要显示的信息

操作:

1.为被监听对象(通常是数据模型组件)注册监听器

2.重写监听器的observeValueForKeyPath: ofObject: change: context: 方法

keyPath 被修改的keyPath

object 被修改的对象

change 被修改的属性值

context 被修改的上下文 add 方法中的context

-(void)setP:(FKPreson *)p{

_p=p;

[self.p addObserver:self forKeyPath:@"name" options:NSKeyValueObservingOptionNew context:@"my name"];

[self.p addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionNew context:@"my age"];

}

-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{

NSLog(@"_____________我是华丽的分割线________________");

NSLog(@"%@",keyPath);

NSLog(@"%@",object);

NSLog(@"%@",change);

NSLog(@"%@",context);

}

-(void)dealloc{

[self.p removeObserver:self forKeyPath:@"name"];

[self.p removeObserver:self forKeyPath:@"age"];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容