美文网首页
KVO—监听数组长度的变化

KVO—监听数组长度的变化

作者: 一叶知秋0830 | 来源:发表于2019-12-19 17:18 被阅读0次

通过KVO监听数组时,当直接通过.语法获取的数组来添加或删除元素时并不会触发KVO,需要通过KVC的方式来获取数组然后再添加或删除元素才会触发KVO

[self.school addObserver:self forKeyPath:@"studentArr" options:NSKeyValueObservingOptionNew context:NULL];

 Student *stu = [[Student alloc] init];
 
 // 通过这种方式添加元素不会触发KVO
[self.school.studentArr addObject:stu];

// 通过这种方式添加元素可以触发KVO,因为KVO原理是对set方法的监听,通过KVC获取到属性值,这样才能观察到数组属性的修改
[[self.school mutableArrayValueForKey:@"studentArr"] addObject:stu];

当然,也可以通过手动触发KVO来解决这个问题:

[self.school willChangeValueForKey:@"studentArr"];
[self.school.studentArr addObject:stu];
[self.school didChangeValueForKey:@"studentArr"];

相关文章

  • KVO—监听数组长度的变化

    通过KVO监听数组时,当直接通过.语法获取的数组来添加或删除元素时并不会触发KVO,需要通过KVC的方式来获取数组...

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

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

  • webview进度条-ios

    使用KVO监听WKWebView的“estimatedProgress”属性,通过监听该属性的变化才是进度条的长度...

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

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

  • iOS监听控制器数组变化

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

  • IOS- KVO 监听数组长度的变化

    首先 为什么要说 因为 KVO普通的写法是监听不到 数组的长度的变化的 为什么?自己百度 下面是我的代码写法 全部...

  • 2.4 KVO设计模式(监听对象属性的变化)

    KVO设计模式(监听对象属性的变化) BOSS类 KVO设计模式(监听对象属性的变化).png

  • 【iOS】KVO的实现

    KVO:(Key-Value-Observering)键值监听,用于监听某个对象属性的变化 KVO的基本使用 打印...

  • KVO

    KVO KVO 的全称是 Key-Value Observing,也叫做 “键值监听”,用于监听对象属性值的变化。...

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

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

网友评论

      本文标题:KVO—监听数组长度的变化

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