NSMutableDictionary 中 setObject:forKey: 和 setValue:forKey: 的区别在哪里?

2023-11-25

当查看文档时,我几乎看不出有什么大的区别。“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(使用前将#替换为@)

NSMutableDictionary 中 setObject:forKey: 和 setValue:forKey: 的区别在哪里? 的相关文章

随机推荐