KVO,这个词,我很熟悉,也曾经认为自己对它理解的很好,直到今天看到了使用KVO实现的代码,才真正了解它的强大。
1,KVO的优点(从别的地方copy过来的):
KVO的优点:
当 有属性改变,KVO会提供自动的消息通知。这样的架构有很多好处。首先,开发人员不需要自己去实现这样的方案:每次属性改变了就发送消息通知。这是KVO 机制提供的最大的优点。因为这个方案已经被明确定义,获得框架级支持,可以方便地采用。开发人员不需要添加任何代码,不需要设计自己的观察者模型,直接可 以在工程里使用。其次,KVO的架构非常的强大,可以很容易的支持多个观察者观察同一个属性,以及相关的值。
2,KVO应用的场景
---某个对象的属性变化时,其他对象或者UI也会有变化。(强调及时性,而且更利于封装,减少代码耦合)
---通常与NSOperation子类的操作有关。
3,KVO的相关的几个方法
---addObserver:forKeyPath:options:context: //注册“成为”观察者。
---observeValueForKeyPath:ofObject:change:context: // 实现如何响应变化的消息。
---+ (BOOL)automaticallyNotifiesObserversForKey:(NSString*)key //可定制某些属性是否自动通知。
---willChangeValueForKey 和 didChangeValueForKey: //手动通知相关。