KVO
KVO全称KeyValueObserving,键值监听,是苹果提供的一套事件通知机制。允许对象监听另一个对象特定属性的改变,并在改变时接受到事件。
KVO 的使用
三个方法
- 注册观察者
addObserver:(nonnull NSObject *) forKeyPath:(nonnull NSString *) options:(NSKeyValueObservingOptions) context:(nullable void *) -
- observer:观察者,被观察的对象发生改变时通知的接受者
-
- keyPath:被观察的属性名
-
- options:回调方法里收到被观察的属性的旧值或新值,枚举类型
-
- context:可传入任何类型的对象,会传递到回调的方法中,kvo的一种传值方式??
- 观察的对象发生改变,回调的方法
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context -
- keyPath:被观察对象的属性
-
- object:被观察的对象
-
- change:字典,存放相关的值,根据options传入的枚举来返回新值旧值
-
- context:注册观察者的时候,context传递过来的值
- 移除观察者
-(void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath -
- observer:观察者
-
- 被观察的对象的属性
举例:
viewDidLoad中初始化,并注册观察者
点击任意处,修改属性的值