KVO
KVO(Key-Value-Observer)也就是观察者模式,是苹果提供的一套事件通知机制。允许对象监听另一个对象特定属性的改变,并在改变时接收到事件。
1、KVO使用
- 监听对象的某个属性
- (void)addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath options:(NSKeyValueObservingOptions)options context:(nullable void *)context;
- 实现非正式协议
- (void)observeValueForKeyPath:(nullable NSString *)keyPath ofObject:(nullable id)object change:(nullable NSDictionary<NSKeyValueChangeKey, id> *)change context:(nullable void *)context;
- 移除观察者
- (void)removeObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath;
注意:addObserver和removeObserver需要成对出现,苹果建议在init的时候添加观察者,delloc时移除观察者。
- 如果没有移除,那会在观察者释放后在次接收到KVO回调会造成crash
- 如果重复remove也会导致
NSRangeException
类型的Crash