美文网首页
iOS 关于KVO, 以及对数组的监听

iOS 关于KVO, 以及对数组的监听

作者: gyq琪琪 | 来源:发表于2017-07-21 15:11 被阅读41次

1. KVO (Key-Value Observing) 是Cocoa提供的一种基于KVC的机制,允许一个对象去监听另一个对象的某个属性,当该属性改变时系统会去通知监听的对象(不是被监听的对象)。

//1>.添加观察者

//第一个self 代表被观察对象

//第二个self 代表观察者

//KeyPath: 实例变量路径

//options 可选项, 可以添加多个, 重甲用 | 分开

//context 上下文, 可以用来传值

2>. 接受KVO的事件  - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void *)context;

3>. 移除观察者 [self removeObserver:self forKeyPath:@"name"];

此外对数组的观察要注意一点, 当你给数组发送addObject:消息时,是不会触发KVO通知的,但是通过mutableArrayValueForKey:这个方法对集合对象进行的相关操作(增加,删除,替换元素)就会触发KVO通知,这个方法会返回一个中间代理对象,这个中间代理对象的类会指向一个中间类,你在这个代理对象上进行的操作最终应在原始对象上造成同样的效果

cocoachina 看到一篇关于KVO 写得非常详细 

相关文章

  • KVO如何才能直接监听到数组的变化

    转自关于使用KVO监听数组的问题 首先,数组不能直接使用KVO使用监听。当我们想要使用KVO监听数组的状态时改变然...

  • iOS 关于KVO, 以及对数组的监听

    1. KVO (Key-Value Observing) 是Cocoa提供的一种基于KVC的机制,允许一个对象去监...

  • 使用RAC/KVO监听数组的变化

    iOS默认不支持KVO的形式来监听数组的变化,数组改变的时候,只是数组里面的值变化,但数组的地址没有变化,KVO监...

  • [iOS] KVO监听数组

    对于swift,因为数组是值类型, 操作数组时,didSet 属性观察就可以很容易做到这一点. 对于Objecti...

  • 关于使用KVO监听数组的问题

    首先,数组不能直接使用KVO使用监听。当我们想要使用KVO监听数组的状态时改变然后尽心操作时,我们需要进行一下几部...

  • iOS KVO方式监听数组的变化

    iOS默认不支持对数组的KVO,因为普通方式监听的对象的地址的变化,而数组地址不变,而是里面的值发生了改变。 第一...

  • iOS KVO方式监听数组变化方法

    iOS默认不支持对数组的KVO,因为普通方式监听的对象的地址的变化,而数组地址不变,而是里面的值发生了改变 整个过...

  • KVO监听数组

    楼主最近遇到一个需求:在某个页面中添加一个collectionView,collectionView的高度随着数据...

  • iOS监听控制器数组变化

    用KVC监听viewcontroller的数组变化,在控制器里面有一个可变数组属性 若是用KVO监听数组mArra...

  • KVO

    KVO (Key-value-observing) 键值监听 iOS用什么方式实现对一个对象的KVO?(KVO的本...

网友评论

      本文标题:iOS 关于KVO, 以及对数组的监听

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