KVO的底层原理

Key-Value Observing 键值对观察者模式

基于OC强大的Runtime机制和isa-swizzle机制、考虑到OC的对象存储方式和类存储方式

OC在底层实现了KVO的这种观察者模式,开发者可以在不修改某个类A的情况下,很轻易的实现对A的某个对象中任意属性的监视

KVO原理

运行过程中,当观察者对象对被监听者进行监听的时候,系统自动为被监听类创建一个临时的

派生类,并在派生类中重写setter方法,增加willChangeValueForKey和didChangeValueForKey

在will中保存历史值,在did中保存修改后的值,并通知所有的观察者对象


动态性导致宏定义不会影响到编译后的包大小,没有import的文件也会被

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

相关阅读更多精彩内容

  • KVC和KVO在实际的运用中是很常见的。所以了解它的底层实现原理是非常不错的一件事。 KVC(NSKeyValue...
    HelloAda阅读 7,255评论 0 3
  • 1 KVC(KeyValueCoding) 1.1 KVC 常用的方法 1.2 KVC 底层实现原理 1.3 KV...
    wg689阅读 20,964评论 11 59
  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,876评论 0 9
  • 本文结构如下: Why? (为什么要用KVO) What? (KVO是什么) How? ( KVO怎么用) Mo...
    等开会阅读 5,574评论 1 21
  • 引用孙源的话 http://blog.sunnyxx.com/2014/03/09/objc_kvo_secret...
    charlotte2018阅读 3,165评论 0 1

友情链接更多精彩内容