KVO本质

实现过程:
对一个person类的实例对象A的一个属性添加kvo之后,会在runtime时生成一个person类的子类——NSKVONotifying_person类,并让对象A的isa指针指向该子类,在该子类中会有一个NSSet*valueAndNotify的方法(根据监听的属性的值的不同,会有不同的类型,int、double等),该方法会在调用A对象的set方法之前调用willChangeValueforkey方法,调用set方法之后调用didChangeValueforkey,在didchange方法中会触发kvo的代理

如何手动触发:
让对象调用
willChangeValueforKey: 和
didChangeValueforKey:方法即可手动触发监听,仅调用didChangeValueforKey:不会生效

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问题 iOS用什么方式实现对一个对象的KVO?(KVO的本质是什么?) 如何手动触发KVO ? 首先需要了解KVO...
    hjltony阅读 588评论 0 2
  • 面试问题: · iOS用什么方式实现对一个对象的KVO? · 如何手动触发KVO? 我们通过以下几个点来寻找这两个...
    高思阳阅读 252评论 0 1
  • 对小码哥底层班视频学习的总结与记录。面试题部分,通过对面试题的分析探索问题的本质内容。 问题iOS用什么方式实现对...
    萧1帅阅读 172评论 0 0
  • 对小码哥底层班视频学习的总结与记录。面试题部分,通过对面试题的分析探索问题的本质内容。 问题iOS用什么方式实现对...
    xx_cc阅读 10,832评论 26 65
  • KVO的全称 Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变。 上述代...
    skogt阅读 438评论 0 3