Objective c 使用-setValue:forKey:vs";object.var=…”;
这两行代码之间的区别在于,第二行代码与KVO兼容,而第一行代码与KVO不兼容Objective c 使用-setValue:forKey:vs";object.var=…”;,objective-c,cocoa-touch,key-value-observing,key-value-coding,Objective C,Cocoa Touch,Key Value Observing,Key Value Coding,这两行代码之间的区别在于,第二行代码与KVO兼容,而第一行代码与KVO不兼容 [person setValue:tempPerson.name forKey:@"name"]; person.name = tempPerson.name; 我问这个问题的原因是因为我需要更新500多个对象上的60个属性,我不希望KVO通知超过几个属性 我正在为UITableView使用NSFECTDRESULTSCONTROLLER,我不想在单元格上触发过多的setNeedDisplay。就键值观察而言,这两行
[person setValue:tempPerson.name forKey:@"name"];
person.name = tempPerson.name;
我问这个问题的原因是因为我需要更新500多个对象上的60个属性,我不希望KVO通知超过几个属性
我正在为UITableView使用NSFECTDRESULTSCONTROLLER,我不想在单元格上触发过多的setNeedDisplay。就键值观察而言,这两行之间没有区别。默认情况下,两者都会触发KVO通知。不过,您可以覆盖此行为。来自苹果公司的KVO编程指南: 通过实现类方法
automaticallynotifiesobsersforkey:
,可以控制子类属性的自动观察者通知。子类可以测试作为参数传递的密钥,如果应该启用自动通知,则返回YES;如果应该禁用自动通知,则返回NO
谢谢,所以这只是一种不同的风格,使用这两种方法都没有好处?第一行执行速度较慢,更难阅读,因此我认为使用它没有好处,除非您必须这样做(也就是说,属性的名称是一个变量,在编译时不知道)。