KVO是苹果自带的一个机制,用于监听当前这个类的属性值的改变,当被监听的属性值发生改变时,当前的类会接收到属性改变的通知
如果想在一个类中使用KVO,需要先添加一个KVO来监听指定属性的改变
self addObserver:(NSObject *) forKeyPath:(NSString *) options:(NSKeyValueObservingOptions) context:(void *)
addObserver 监听对象的类
forKeyPath 监听对象的属性名
options 属性发生的改变类型
context 传的参数
当监听 的属性发生改变的时候会调用以下的方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
重写dealloc方法,并释放KVO的监听
-(void)dealloc
{
[self.view removeObserver:self forKeyPath:@"KVOName"];
}
KVO 的优点:
当有属性改变,KVO 会提供自动的消息通知。这样开发人员不需要自己去实现这样的方案:每次属性改变了就发送消息通知。
这是 KVO 机制提供的最大的优点。因为这个方案已经被明确定义,获得框架级支持,可以方便地采用。
开发人员不需要添加任何代码,不需要设计自己的观察者模型,直接可以在工程里使用。
其次,KVO 的架构非常的强大,可以很容易的支持多个观察者观察同一个属性,以及相关的值。