繁体   English   中英

如何合并KVO变化?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM