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 次 | 
| 最近记录: |