都需要在dealloc中释放
-(void)dealloc{
//移除监听、观察对象
[object removeObserver:self forKeyPath:@"age"];
}
1 、//添加观察对象
[object addObserver: observer forKeyPath: @"age" options: 0 context: nil];
object: 被观察者
observer: 观察者,一般是 self 控制器
options: 有四个值
1、NSKeyValueObservingOptionNew 把更改之前的值提供给处理方法
2、NSKeyValueObservingOptionOld 把更改之后的值提供给处理方法
3、NSKeyValueObservingOptionInitial 把初始化的值提供给处理方法, 一旦注册,立马就会调用一次。通常它会带有新值,而不会带有旧值。
4、NSKeyValueObservingOptionPrior 分2次调用。在值改变之前和值改变之后。
context:上下文,可以带一些参数,任何类型都可以
所有的 kvo 监听到事件,都会调用此方法
1. 观察的属性
2. 观察的对象
3. change 属性变化字典
4. 上下文,与监听的时候传递的一致
- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context;
网友评论