美文网首页iOS Developer
对KVO底层实现做一个补充

对KVO底层实现做一个补充

作者: 阿汤8阿义 | 来源:发表于2016-04-23 10:55 被阅读81次

    在我们使用kvo时总共是分为三部,第一步是初始化kvo,在就是kvo的触发方法,最后是监听属性。下面我就对以上的几个步骤进行底层分析。

    先来讲讲我们的第一步初始化kvo。在初始kvo这一过程做了什么了?看下图

    这是创建KVO之前和创建之后,lab这个被观察对象的isa的不同。创建kvo后isa变为了NSKVONotiying_UILabel从这里可以看出我们的被观察者这个过程中添加了一下新的东西。那他在这一过程具体做了什么了,请看下面的过程。

    我理解就是在初始化kvo中我们的被观察者会被继承NSKVONotiying_UILabel这个类。而观察者穿进来是用来做类似设置代理一样的形式,因为我们的触发方法是在观察者这个类中进行的。观察的值是用来设置观察的属性,只有对应上了要观察的属性才会去触发回掉方法。下面是我写的一个实际的例子用来模仿底层实现步骤:

    首先就是初始化kvo,我这里用到的是代理回调

    //触发

    //在这里执行了

    在这里初始化KVO的作用就是让我们的被观察者对象继承NSKVONotiying_UILabel类,在通过我们的被观察者属性的set方法去调用触发方法在回调到观察者类中(观察者就是用来确定在哪里回调)。Kvo的初始化就帮我们把个路径连接好。

    这是仿照kvo底层写的代码https://github.com/tangyi1234/kvo.git

    相关文章

      网友评论

        本文标题:对KVO底层实现做一个补充

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