KVOController 是一个简单安全的 KVO(Key-value Observing,键-值 观察)工具,用于 iOS 和 OS X 应用开发中,开源自 facebook。
KVO 是一个在 MVC(Model-View-Controller)应用程序开发中,用于不同模块间交流的一个很有用的技术。 KVOController 是基于 Cocoa 久经考验的 Key-value Observing 实现(implementation)开发而成的。它提供了一个简单现代的 API,同时也是线程安全的。它有如下优点:
1.不需要手动移除观察者;框架自动帮我们移除观察者
2.使用 block 来替代方法能够减少使用的复杂度,提升使用 KVO 的体验;block或者selector的方式,方便使用
3.每一个 keyPath 会对应一个属性,不需要在 block 中使用 if 判断 keyPath;一个keyPath对应一个SEL或者block,不需要统一的observeValueForKeyPath方法里写if判断
KVOControlle的实现只需要一个方法
方法1:检测单个属性的变化
方法2:检测多个属性变化
fbKVO = [FBKVOController controllerWithObserver:self];
一:kvo值检测类型;
1:NSKeyValueObservingOptionNew 传递变化之后的值;
2:NSKeyValueObservingOptionOld 传递变化之前的值;
3:NSKeyValueObservingOptionInitial 观察者会在程序初始时,也就是观察变化之前,优化执行一次 观察动作;即上述执行上面 block操作一次;并且传递 默认的值,和以后传递 变化后的值;
4:NSKeyValueObservingOptionPrior 会调用两次观察者操作,值改变之前,值改变之后;
二:获取
kvo的值;
change[NSKeyValueChangeNewKey] 新值;
change[NSKeyValueChangeOldKey] 旧值;
change[FBKVONotificationKeyPathKey] 改变的属性;
*/