KVOController的使用

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]  改变的属性;

*/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • KVO 作为 iOS 中一种强大并且有效的机制,为 iOS 开发者们提供了很多的便利;我们可以使用 KVO 来检测...
    JzRo阅读 4,558评论 0 2
  • KVO 作为 iOS 中一种强大并且有效的机制,为 iOS 开发者们提供了很多的便利;我们可以使用 KVO 来检测...
    Draveness阅读 11,801评论 11 59
  • 上半年有段时间做了一个项目,项目中聊天界面用到了音频播放,涉及到进度条,当时做android时候处理的不太好,由于...
    DaZenD阅读 8,120评论 0 26
  • 一、_objc_msgForward函数是做什么的,直接调用它将会发生什么? _objc_msgForward是一...
    一个人一匹马阅读 2,833评论 0 1
  • 什么是坐标系的转换? 不同坐标系,控件的View的frame值是不同的,比如上图的红色View,以蓝色控件为父控件...
    船长_阅读 13,792评论 4 13