2

这两行代码的区别在于,第二行是 KVO 兼容的,而第一行不是?

[person setValue:tempPerson.name forKey:@"name"];
person.name = tempPerson.name;

我问的原因是因为我需要更新 500 多个对象的 60 个属性,我不希望 KVO 通知超过少数属性。

我正在为我的 UITableView 使用 NSFecthedResultsController 并且我不想在单元格上触发过多的 setNeedDisplay。

4

1 回答 1

3

就 Key-Value Observing 而言,这两行没有区别。默认情况下,两者都会触发 KVO 通知。不过,您可以覆盖此行为。来自 Apples 的 KVO 编程指南:

您可以通过实现类方法来控制子类属性的自动观察者通知automaticallyNotifiesObserversForKey:。子类可以测试作为参数传递的键,如果应该启用自动通知,则返回 YES,如果应该禁用它,则返回 NO。

于 2009-11-26T22:33:22.887 回答