美文网首页初见
探讨KVO的底层原理和自定义KVO

探讨KVO的底层原理和自定义KVO

作者: 神一样的男人卫 | 来源:发表于2018-05-23 11:01 被阅读362次

一、KVO的理解

1.KVO(键值监听)即Key-Value-Observing,是Objective-C对观察者设计模式的一种实现,那么它的工作原理就是对一个指定的被观察对象(例如Person类),当Person的属性name的发生了改变时,那么此时监听对象就会获得通知,并作出相应的处理。

二、代码分析

图1 图2 图3

代码实现思路:图1中对Person类的属性name进行键值观察,通过图3点击模拟器屏幕来修改name的值,然后在图2中的监听方法里打印name变化的值。

二、KVO底层实现原理(以Person类为例)    

    1.自定义Person类的子类,即派生出NSKVONotifying_Person这个类

图4

    2.重写setName:方法,在内部恢复父类做法,通知观察者

    3.如何让外界调用自定义Person的子类方法,修改当前对象的isa指针,指向自定义的子类!

三、自定义KVO

图5 图6 图7

你只要理解了KVO到底干了啥,那你就能对自定义的KVO有个很好的理解!

我是新手,如有不对的地方,欢迎大家指正,大家一起共同进步!谢谢!

相关文章

网友评论

    本文标题:探讨KVO的底层原理和自定义KVO

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