KVO本质

作者: 凶猛老鹰 | 来源:发表于2021-05-10 11:57 被阅读0次

1.添加观察者的对象的isa指向的是NSKVONotifying_Person,未添加观察者的对象的isa指向的是Person(以Person类为例)

2.NSKVONotifying_Person是Runtime动态创建的一个Person的子类

3.KVO实现步骤:通过添加了观察者的对象的isa找到NSKVONotifying_Person, 再找到对应属性的set方法, 在set方法的内部调用Foundation中的_NSSetIntValueAndNotify(属性类型是int类型)C语音函数,_NSSetIntValueAndNotify函数内部实现了[self willChangeValueForKey], [super setAge: age], [self didChangeValueForKey].在didChangeValueForKey函数内部通知监听器,某某属性值发生了改变.

4.NSKVONotifying_Person重写了class方法(屏蔽内部实现隐藏了NSKVONotifying_Person类的存在),dealloc方法, 还有一个_isKVOA方法.

5.直接修改成员变量是不会触发KVO的

6.通过KVC修改属性是会触发KVO的(①实例对象调用willChangeValueForKey,②修改成员变量的值,③实例对象调用didChangeValueForKey)

相关文章

  • Objective-C的本质(4)—— KVO本质

    参考:iOS底层原理总结 - 探寻KVO本质iOS-KVO本质 问题一:kvo如果找到对应的属性 KVO不存在查找...

  • iOS原理篇(一): KVO实现原理

    KVO实现原理 什么是 KVO KVO 基本使用 KVO 的本质 总结 一 、 什么是KVO KVO(Key-Va...

  • 深入理解KVO

    iOS | KVO | Objective-C KVO的本质是什么,如何手动触发KVO? 1.什么是KVO KVO...

  • 04. KVO使用,原理,本质

    问题 KVO日常使用 KVO原理(KVO本质是什么) 如何手动触发KVO 直接修改成员变量会触发KVO吗 KVO图...

  • KVO

    0:KVO的使用步骤 1:KVO本质 methodForSelector方法 NSKVONotifying_Per...

  • 探索中的KVO

    探索KVO的本质 什么是KVO KVO的全称就是Key-Value Observing ,俗称“键值监听”。用于监...

  • KVO本质

    kvo本质是监听对象有没有调用set方法。假如对象属性是直接通过赋值方式改变的,则不会触发KVO机制。

  • KVO本质

    本质 runtime动态生成子类NSKVONotifying_NSPerson 修改了setAge:方法 子类 l...

  • KVO本质

    实现过程:对一个person类的实例对象A的一个属性添加kvo之后,会在runtime时生成一个person类的子...

  • KVO本质

    面试题: 简单使用: 发现:直接修改成员变量会 是不会触发KVO的.//分析:NSDictionary

网友评论

      本文标题:KVO本质

      本文链接:https://www.haomeiwen.com/subject/uffidltx.html