要了解通知、KVO、代理的区别,合理利用。
[A]KVO是什么
KVO 是 Objective-C 对观察者设计模式的一种实现。
KVO提供一种机制,指定一个被观察对象(例如A类),当对象某个属性(例如A中的字符串name)发生更改时,对象会获得通知,并作出相应处理;【且不需要给被观察的对象添加任何额外代码,就能使用KVO机制】
[B]用法
KVO实现前提:观察对象的属性执行了setter方法、或者使用了KVC赋值
1.注册观察者,实施监听;
2.在回调方法中处理属性发生的变化;
3.移除观察者;
1.- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context;采用[object addObserve:....]注册监听。
2.- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context实现该方法,当监听属性变化时,会调用该方法。
3.- (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath context:(nullable void *)context NS_AVAILABLE(10_7, 5_0);该方法用于移除观察者。
本文参考自:http://www.jianshu.com/p/e59bb8f59302
网友评论