从带括号的 NSDictionary 中提取值 vs. objectForKey: 或 valueForKey:

5 objective-c objective-c-literals

我想知道这种方便的方法代表什么,但无法找到任何答案。

theDictionary[@"key"]当想要从字典中提取一个值时到底做了什么?是使用valueForKey:还是objectForKey:

什么是更好的性能?像这样写整个消息更好[theDictionary objectForKey:@"key"]还是方便的方法就足够了?

Eik*_*iko 3

NSDictionaryobjectForKey:提供访问其内容的方法。valueForKey:这个相关问题深入解释了两者的区别: Difference Between objectForKey and valueForKey?

运算[]符是 的快捷方式objectForKey:。无论您使用哪一种并不重要,但前一种更容易阅读(代码噪音更少),其意图立即清晰,并且您不必考虑它是objectForKey:还是valueForKey:.

所以就我个人而言,我更喜欢[].

  • 下标是“objectForKeyedSubscript:”的糖,而不是直接“objectForKey:”。(另外,“@[]”是一个字面量“NSArray”,而不是下标:删除“@”。) (5认同)
  • `dict[key] = value` 实际上翻译为 `setObject:forKeyedSubscript`,它具有在值为 `nil` 时调用 `removeObjectForKey` 的行为。这使您能够通过将“nil”分配给键来删除对象。 (2认同)