使用-setValue:forKey:vs“object.var = ...”

时间:2009-11-26 19:41:53

标签: objective-c cocoa-touch key-value-observing key-value-coding

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

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

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

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

1 个答案:

答案 0 :(得分:3)

就关键值观察而言,两条线之间没有区别。两者都默认触发KVO通知。但是,您可以覆盖此行为。来自Apples的KVO编程指南:

  

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