当查看文档时,我几乎看不出有什么大的区别。“value”和“object”都是 id 类型,所以可以是任何对象。键曾经是一个字符串,在其他情况下是一个 id。其中一个似乎保留了该物体,而另一个则没有。还有什么?哪一个适用于什么情况?
setValue:forKey:
是的一部分NSKeyValue编码协议,除其他外,它允许您从 Interface Builder 等访问对象属性。setValue:forKey:
在类以外的类中实现NSDictionary
.
setObject:forKey:
is NSMutableDictionary's
存在的理由。它的签名恰好与 setValue:forKey: 非常相似,但更通用(例如任何键类型)。签名如此相似,有点巧合。
更令人困惑的是 NSMutableDictionary 的实现setValue:forKey:
相当于setObject:forKey:
在多数情况下。在其他班级中,setValue:forKey:
更改成员变量。在NSMutableDictionary
,它会更改字典条目,除非您在键前添加“@”字符——在这种情况下,它会修改成员变量。
So, 简而言之,使用setObject:forKey:
当您需要使用字典键和值时,以及setValue:forKey:
在极少数情况下您需要解决KVP.
编辑:哦,看起来这个问题已经被问过并回答过:objectForKey 和 valueForKey 之间的区别?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)