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"];
}