KVO的实现原理

作者: 喜剧收尾_XWX | 来源:发表于2021-01-10 14:41 被阅读0次

一、底层实现步骤

需求:观察对象Person,观察属性name

  1. 利用runtime动态创建(objc_allocateClassPairPerson_A 类,继承自Person
  2. 设置Person对象的指针指向Person_A
  3. 检测Person_A的方法列表methodList中是否有setName:方法,如果没有就动态添加(class_addMethod)重写的setter方法。
  4. kvo_setter方法中利用setter方法取出getter方法,并获得旧值。
  5. kvo_setter中通过objc_msgSendSuper发送新的value值
  6. 在给Person_A添加观察者时候会动态创建(objc_setAssociatedObjectObservers对象的数组,每个数组的元素中包含观察对象、观察属性、新旧值等信息
  7. Person_A的setter方法里会进行异步回调,通知观察者
  8. Person某个属性移除观察时,则在Observers中移除该条记录。

二、手动实现一个kvo

上代码:https://gitee.com/XingweixinJoker/objc-kvo.git

相关文章

  • iOS KVO

    KVO 示例 KVO的实现原理

  • 常见面试题--KVC和KVO

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

  • 知识集锦

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

  • iOS - 自定义KVO

    之前我们已经了解过了KVO的底层实现原理,不过呢,在我们开始实现自定义KVO之前再来简单回顾下KVO的实现原理 1...

  • iOS - KVO

    [toc] 参考 KVO KVC 【 iOS--KVO的实现原理与具体应用 】 【 IOS-详解KVO底层实现 】...

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

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

  • iOS高级进阶之KVO

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

  • iOS 自定义KVO

    通过在了解KVO的实现原理和实现步骤之后,我们可以手动实现KVO,具体可以看最后的demo,这里只讲实现原理 添加...

  • iOS 进阶原理知识笔记

    KVO实现原理 KVO基本原理: 1 kvo是基于runtime机制实现的 2 当某个类的属性对象第一次被观察时,...

  • iOS 进阶原理知识随笔

    KVO实现原理 KVO基本原理: 1 kvo是基于runtime机制实现的 2 当某个类的属性对象第一次被观察时,...

网友评论

    本文标题:KVO的实现原理

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