iOS - KVO

ios用什么方式实现一个对象的kvo?(kvo的本质是什么?)

KVO的全称是key-value obsering 俗称"键值监听",可以用于监听某个对象属性值的改变

1.利用runtime的动态生成一个子类,并且让实例对象的isa指向全新的子类

2.当修改实例对象的属性时,会调用Foundation的NSSet***ValueAndNotify函数,函数内部调用willChangeValueForKey,然后调用父类原来的setter方法,.然后调用didChangeValueForKey方法.didChangeValueForKey内部触发监听器的observeValueForKeyPath方法

如何手动触发KVO?

手动调用下面两个方法

[self.p1 willChangeValueForKey:@"age"];[self.p1 didChangeValueForKey:@"age"];

参考:OC底层学习笔记(3)-KVO的实现 - 简书

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

推荐阅读更多精彩内容

  • KVO 即 Key-Value Observing,翻译成键值观察。它是一种观察者模式的衍生。其基本思想是,对目标...
    木小易Ying阅读 2,607评论 0 3
  • 什么是KVO? KVO 全称 Key Value Observing,是苹果提供的一套事件通知机制。允许对象监听另...
    萨缪阅读 12,263评论 0 17
  • 什么是KVO? KVO 全称 Key Value Observing,是苹果提供的一套事件通知机制。允许对象监听另...
    萨缪阅读 3,555评论 0 1
  • 老掉牙的题目了,只是为了总结下知识点,还有新进门的iOS。不喜勿喷! KVO 前言: 我们知道iOS中NSObje...
    咖啡豆8888阅读 3,725评论 0 3
  • KVO KVO的全称是Key-Value-Observing,俗称“键值监听”,可以用于监听某个对象属性的改变。 ...
    天空像天空一样蓝阅读 2,929评论 0 5