在@"key"
中使用setObject(id):forKey(id)
之类的字符串文字是否只能起作用,因为编译器会优化字符串文字的所有实例以指向同一个对象?或者检索具有objectForKey(id)
的对象实际比较密钥的字符串值?
如果NSDictionary
是由JSON解析等外部函数创建的,该怎么办?现在,当我使用字符串文字访问对象时,它将是编译器第一次看到键字符串,并且它不会是JSON解析器在创建字典时使用的相同对象。
从外部创建的字典访问值时,我应该使用valueForKey(NSString *)
吗?
答案 0 :(得分:2)
NSDictionary是一个哈希表,这意味着首先计算一些函数,通过键来查找某些数组中的索引值(称为哈希码,这是一个快速操作)。 然后,由于某些键可以产生相同的哈希值,因此将此哈希码的所有键与我们要搜索的键进行比较。