[英]How to coalesce KVO changes?
我有一个相当简单的iPhone应用程序,它将一组UITableView结果下载到它的模型类中,以及一个视图控制器,它设置为使用KVO观察这些变化。
这个系统运行良好(比散布更新代码更好),除了当我得到结果时,我将它们逐个添加到支持NSMutableArray。 这会激发许多KVO通知,以一种看似奇怪的方式错开我的行动画。 有没有办法合并某些KVO通知,以便所有更改都可以立即发生,从而提供单个索引集的单个KVO通知?
或者,如果我尝试调用-addObjectsFromArray
以批量方式添加我的新结果,则永远不会发送必要的KVO通知,因此它不能是观察到的方法之一,对吧? 通过使用will
/ didChangeValueForKey
调用包装我的更改并生成适当的索引集,自己处理此功能会更好吗?
我有完全相同的问题。 我还没有一个合适的解决方案,但您可以在KVO编程指南的这一页上找到一些答案:
您可以实现这些方法,一次将多个对象添加到您的数组:
-insert<Key>:atIndexes: and -remove<Key>AtIndexes
(corresponding to the NSMutableArrayinsertObjects:atIndexes: and removeObjectsAtIndexes: methods)
希望这有帮助,文森特。
关于你的第二个问题,关于使用-addObjectsFromArray
:这个方法确实不会触发KVO通知(对我来说,有问题的方法是removeAllObjects
)。 此外,或者作为替代方案,要实现阵列访问器 ,您可以执行以下操作:
[[self mutableArrayValueForKey:@"key"] removeAllObjects];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.