在我的iPhone应用程序中,当用于填充它的项目列表(此列表是应用程序委托的NSMutableArray属性)被修改时,我想重新加载表视图。
最好的方法是什么?
起初我虽然是NSTimer,但我想这不是一个正确的方法......
May KVO模式可以解决这个问题吗?
答案 0 :(得分:1)
这是我推荐的,我非常肯定最好的方法。
答案 1 :(得分:1)
KVO是可行的方法,但您必须确保使用适当的访问器对阵列进行更改,以便KVC / KVO机制正常工作。
至少,使用NSMutableArray
返回的可变代理更改mutableArrayValueForKey:
属性。 Apple's documentation suggests that you go further:
强烈建议您实现这些可变访问器 而不是依赖于直接返回可变集的访问器。该 可变访问器在进行更改时效率更高 关系中的数据。
为了符合可变序列的键值编码 你必须实现以下方法的多对多关系:
-insertObject:in<Key>AtIndex:
或-insert<Key>:atIndexes:
。必须实现这些方法中的至少一种。这些类似于 NSMutableArray方法insertObject:atIndex:
和insertObjects:atIndexes:
。
-removeObjectFrom<Key>AtIndex:
或-remove<Key>AtIndexes:
。必须实现这些方法中的至少一种。这些方法对应于 NSMutableArray方法removeObjectAtIndex:
和 分别为removeObjectsAtIndexes:
。
-replaceObjectIn<Key>AtIndex:withObject:
或-replace<Key>AtIndexes:with<Key>:
。可选的。如果基准测试表明性能是一个问题,则实施。将
-insertObject:in<Key>AtIndex:
方法传递给对象 insert,以及一个NSUInteger
,它指定索引应该在哪里 插入。-insert<Key>:atIndexes:
方法插入一个数组 对象在传递的指定索引处进入集合NSIndexSet
。您只需要实现这两个中的一个 方法