153 iphone nsmutabledictionary ios
在查看文档时,我几乎看不出任何重大差异."value"和"object"都是id类型,因此可以是任何对象.Key一次是字符串,另一种情况是id.其中一个似乎保留了对象,而另一个则没有.还有什么?哪一个适用于哪种情况?
Ore*_*ner 163
setValue:forKey:
是NSKeyValueCoding协议的一部分,除其他外,它允许您从Interface Builder等访问对象属性.setValue:forKey:
是在除了以外的类中实现的NSDictionary
.
setObject:forKey:
是NSMutableDictionary's
存在的理由.它的签名恰好与setValue:forKey:非常相似,但更通用(例如任何键类型).签名非常相似,这有点巧合.
更令人困惑的是,NSMutableDictionary的实现在大多数情况下setValue:forKey:
都是等效的setObject:forKey:
.在其他类中,setValue:forKey:
更改成员变量.在NSMutableDictionary
,它会更改字典条目,除非您在键前加上"@"字符 - 在这种情况下,它会修改成员变量.
因此,简而言之,setObject:forKey:
当您需要使用字典键和值时,以及setValue:forKey:
在需要处理KVP的极少数情况下使用.
编辑:哦,看起来之前已经被问过并回答过:objectForKey和valueForKey之间的区别?
use*_*008 83
另一个区别是,如果你给出一个nil值setValue:forKey:
,它会从字典中删除密钥(如果它存在),否则什么都不做.但是,如果你给出一个零值setObject:forKey:
,它会引发异常.
归档时间: |
|
查看次数: |
62278 次 |
最近记录: |