Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 使用-setValue:forKey:vs";object.var=…”;_Objective C_Cocoa Touch_Key Value Observing_Key Value Coding - Fatal编程技术网

Objective c 使用-setValue:forKey:vs";object.var=…”;

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。就键值观察而言,这两行

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

[person setValue:tempPerson.name forKey:@"name"];
person.name = tempPerson.name;
我问这个问题的原因是因为我需要更新500多个对象上的60个属性,我不希望KVO通知超过几个属性


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

就键值观察而言,这两行之间没有区别。默认情况下,两者都会触发KVO通知。不过,您可以覆盖此行为。来自苹果公司的KVO编程指南:

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


谢谢,所以这只是一种不同的风格,使用这两种方法都没有好处?第一行执行速度较慢,更难阅读,因此我认为使用它没有好处,除非您必须这样做(也就是说,属性的名称是一个变量,在编译时不知道)。