美文网首页
KVO原理图解

KVO原理图解

作者: Jorunk | 来源:发表于2019-05-05 15:04 被阅读0次
KVO

KVO是通过isa-swizzling技术实现的(这句话是整个KVO实现的重点)。

在运行时根据原类创建一个中间类,这个中间类是原类的子类,并动态修改当前对象的isa指向中间类。

并且将class方法重写,返回原类的Class。

所以苹果建议在开发中不应该依赖isa指针,而是通过class实例方法来获取对象类型。

流程:

1.当某个类的对象第一次被观察时,系统就会在运行期动态地创建该类的一个派生类,在这个派生类中重写基类中任何被观察属性的 setter 方法。
2.派生类在被重写的 setter 方法中实现真正的通知机制,就如前面手动实现键值观察那样。这么做是基于设置属性会调用 setter 方法,而通过重写就获得了 KVO 需要的通知机制。当然前提是要通过遵循 KVO 的属性设置方式来变更属性值,如果仅是直接修改属性对应的成员变量,是无法实现 KVO 的。
3.同时派生类还重写了 class 方法以“欺骗”外部调用者它就是起初的那个类。然后系统将这个对象的 isa 指针指向这个新诞生的派生类,因此这个对象就成为该派生类的对象了,因而在该对象上对 setter 的调用就会调用重写的 setter,从而激活键值通知机制。此外,派生类还重写了 dealloc 方法来释放资源

参考原文:https://blog.csdn.net/null959_/article/details/81262391

相关文章

  • KVO原理图解

    KVO是通过isa-swizzling技术实现的(这句话是整个KVO实现的重点)。 在运行时根据原类创建一个中间类...

  • KVO的原理

    KVO基本原理: KVO深入原理: 适用于:

  • iOS KVO

    KVO 示例 KVO的实现原理

  • 知识集锦

    https://github.com/starainDou 欢迎点星 KVO实现原理 KVO基本原理: 1 kvo...

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

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

  • iOS高级进阶之KVO

    KVO的原理 分析原理 使用 手动调用 自己实现KVO NSObject+KVOBlock.h NSObject+...

  • 常见面试题--KVC和KVO

    1、KVO实现原理 2、KVC原理

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

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

  • iOS-自定义KVO

    KVO原理及使用 我们之前讨论过KVO的原理,知道KVO机制是生成了一个中间类NSKVONotifying,该中间...

  • 20.iOS底层学习之KVO 原理

    本篇提纲1、KVO简介;2、KVO的使用;3、KVO的一些细节;4、KVO的底层原理; KVO简介 KVO全称Ke...

网友评论

      本文标题:KVO原理图解

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