美文网首页
kvo除了能观察属性外,能不能观察对象

kvo除了能观察属性外,能不能观察对象

作者: 可爱的活火山 | 来源:发表于2017-06-16 06:59 被阅读43次

不能观察对象

KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对象就会接受到通知。简单的说就是每次指定的被观察的对象的属性被修改后,KVO就会自动通知相应的观察者了

KVO是一个对象能够观察另外一个对象的属性的值,并且能够发现值的变化。这是一个对象与另外一个对象保持同步的一种方法,即当另外一种对象的状态发生改变时,观察对象马上作出反应。它只能用来对属性作出反应,而不会用来对方法或者动作作出反应。

实现原理:当为某一个对象属性注册监听的时候,该对象的isa指针就会指向一个中间类,而不是本来对象真实的类。所以说,对象的isa指针可以改变,我们的程序最好不要依赖isa指针。

简而言之就是:

1、当一个object有观察者时,动态创建这个object的类的子类

2、对于每个被观察的property,重写其set方法

3、在重写的set方法中调用- willChangeValueForKey:和- didChangeValueForKey:通知观察者

4、当一个property没有观察者时,删除重写的方法

5、当没有observer观察任何一个property时,删除动态创建的子类

相关文章

  • kvo除了能观察属性外,能不能观察对象

    不能观察对象 KVO,即:Key-Value Observing,它提供一种机制,当指定的对象的属性被修改后,则对...

  • 如何用KVO观察对象的子对象的属性变化

    如何用KVO观察对象的子对象的属性变化?KVO观察多级对象属性变化

  • KVO

    KVO 简介 KVO 键值观察机制,就是观察指定对象的指定属性变化情况。 KVO 键值观察 依赖于 KVC 健值编...

  • iOS中KVO及KVOController原理使用

    KVO是观察者模式的一种实现,利用KVO机制,能很方便地观察对象某个属性的变化。KVO的用法如下 1、添加KVO观...

  • kvo与kvc

    kvo:key value observing 键值观察机制 通过kvo检测对象属性值的变化。每次被观察的对象的属...

  • KVO-容器类的观察

    1.KVO对Array的观察。 我们平时对于对象的属性进行KVO的观察时,都是需要观察变化的对象调用addObse...

  • iOS之KVO

    KVO也就是观察者模式(Key Value Observer),KVO可以用于观察对象某个属性的改变,当被观察的属...

  • KVO实现原理

    KVO KVO 是 Key-Value-Observing 的简称。 KVO 是一个观察者模式。观察一个对象的属性...

  • KVO和利用运行时给补丁中添加属性

    KVO(Key-Value Observing)   GOF设计模式中观察着模式的应用。键值观察 观察对象的属性 ...

  • KVO的原理 && KVC

    KVO kvo 即键值观察 观察一个对象的属性的变化,并在改变时接收到事件kvo是如何监听属性变化的呢 首先要注册...

网友评论

      本文标题:kvo除了能观察属性外,能不能观察对象

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