【发布时间】:2015-06-12 13:43:23
【问题描述】:
在setObject(id):forKey(id) 中使用像@"key" 这样的字符串文字是否只起作用,因为编译器优化了字符串文字的所有实例以指向同一个对象?还是用objectForKey(id) 检索对象实际上是比较键的字符串值?
如果 NSDictionary 是由 JSON 解析等外部函数创建的呢?现在,当我使用字符串字面量作为键访问对象时,这将是编译器第一次看到键字符串,并且它与 JSON 解析器在创建字典时使用的对象不同。
从外部创建的字典中访问值时,我应该使用valueForKey(NSString *) 吗?
【问题讨论】:
-
注意:编译器不优化同一字符串文字的所有实例以指向同一对象。有一次这是真的,通常仍然是真的,但在某些情况下它不是真的。这就是为什么总是需要使用
isEqualToString或isEqual而永远不要使用 '==' 进行相等比较。
标签: ios objective-c nsstring nsdictionary nsmutabledictionary