使用-setValue:forKey:vs“ object.var =…”
-
05-07-2019 - |
题
这两行代码之间的区别在于第二行与KVO兼容而第一行不是吗?
[person setValue:tempPerson.name forKey:@"name"];
person.name = tempPerson.name;
我问的原因是因为我需要在超过500个对象上更新60个属性,我不希望KVO通知超过少数几个属性。
我正在为我的UITableView使用NSFecthedResultsController,我不想在单元格上触发过多的setNeedDisplay。
解决方案
就关键值观察而言,两条线之间没有区别。两者都默认触发KVO通知。但是,您可以覆盖此行为。来自Apples的KVO编程指南:
您可以通过实现类方法
automaticNotifiesObserversForKey:
来控制子类属性的自动观察者通知。子类可以测试作为参数传递的密钥,如果应该启用自动通知则返回YES,如果应该禁用则返回NO。
不隶属于 StackOverflow