美文网首页
第九章、KVO&KVC相关

第九章、KVO&KVC相关

作者: Evans_Xiao | 来源:发表于2019-08-09 21:44 被阅读0次

一、为什么都俗称KVO技术为黑魔法

内部神秘、外观简洁。

二、阐述系统KVO的实现原理

当观察一个对象时,一个新的类(NSKVONotifying_A)会动态被创建。这个类继承自该对象的原本的类,并重写了被观察属性的setter方法。重写的setter方法会负责在调用原setter方法之前和之后,通知所有观察对象值的更改。最后把这个对象的isa指针(isa指针告诉runtime系统这个对象的类是什么)指向这个新创建的子类,对象就神奇的变成了新创建的子类的实例。

简而言之,KVO是系统关于观察者模式的一种实现;KVO运用了isa混写技术的runtime来动态的为某一个类添加一个子类,重写setter,同时将原有的isa指针重新指向新的类。

三、谈谈KVO的本质

当一个对象使用了KVO监听,iOS系统会修改这个对象的isa指针,改为指向一个全新的通过runtime动态创建的子类,子类拥有自己的setter方法实现,setter方法实现内部会顺序调用如下方法实现:
1、willChangeValueForKey方法、
2、原来的setter方法实现、
3、didChangeValueForKey方法,而didChangeValueForKey方法内部又会调用监听器的observeValueForKeyPath:ofObject:change:context:监听方法。

四、关于手动触发KVO

被监听的属性的值被修改时,就会自动触发KVO。如果想要手动触发KVO,则需要我们自己调用willChangeValueForKeydidChangeValueForKey方法即可在不改变属性值的情况下手动触发KVO,并且这两个方法缺一不可。

相关文章

  • 第九章、KVO&KVC相关

    一、为什么都俗称KVO技术为黑魔法 内部神秘、外观简洁。 二、阐述系统KVO的实现原理 当观察一个对象时,一个新的...

  • KVO&KVC

    什么是KVO? KVO是key-value observing的缩写 KVO是Object-C对观察者设计模式的又...

  • KVO&KVC

    KVO KVO的全称是Key-Value Observing,俗称“键值监听”,可以用于监听某个对象属性值的改变,...

  • KVO&KVC

    KVO 是(Key-valueObserve) Objective-C 对观察者模式(Observer Patte...

  • KVO&KVC浅谈

    在谈论KVO和KVC之前,先引出几个问题 问题一:iOS用什么方式实现KVO,你可以理解成KVO本质是什么? 1....

  • iOS知识体系总结-KVO&KVC

    注意:更新内容会同步到GitHub iOSWiki-知识体系总结 总结-KVO&KVC iOS知识点/KVO&KV...

  • iOS底层原理-KVO&KVC

    KVO&KVC KVO:键值监听,可以用于监听某个对象属性值的改变 以上是最简单的KVO的使用,通过打印perso...

  • 第九章 双变量回归与相关

    第九章 双变量回归与相关 x2yliner Sys.Date() 知识清单 直线回归相关概念求法统计推断区间估计 ...

  • (二)Android系统信息

    本文为Android的系统信息相关知识整理,具体参考了 《Android群英传》第九章 Android系统信息与安...

  • 联机共读11期-5.9-张恒

    第九章 搜索优化:搜索引擎、App Store、WeChat 本章主题是SEO,自从搜索引擎出现以来,相关的营销技...

网友评论

      本文标题:第九章、KVO&KVC相关

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