KVO (Key Value Observing) 键值监听

2016-07-19  本文已影响31人  nalis风

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

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

}

上一篇下一篇

猜你喜欢

热点阅读