我只是想知道两者之间的差异,哪一个更快以及它们的优缺点。
答案 0 :(得分:2)
语法dictionary[@"myKey"]
与调用[dictionary objectForKeyedSubscript:@"myKey"]
相同,这与调用[dictionary objectForKey:@"myKey"]
基本相同。
方法valueForKey:
用于KVC(键值编码)。如果密钥不以@
开头,则最终会在objectForKey:
处给出相同的结果,但如果密钥以@
开头,则结果将完全不同。
答案 1 :(得分:1)
dictionary[@"myKey"]
被翻译为
[dictionary objectForKeyedSubscript:key]
由编译器等同于
[dictionary objectForKey:key]
和
dictionary[@"myKey"] = value
被翻译为
[dictionary setObject:newValue forKeyedSubscript:key]
相当于
[dictionary setObject:newValue forKeye:key]
答案 2 :(得分:0)
-valueForKey是一个可以在任何对象上调用的方法,用于获取名为给定“key”的属性的值。它不会在给定字典键的对象的字典中给出值。
但是,如果您想询问-objectForKey
,那么dictionary[@"myKey"]
只是[dictionary objectForKey:@“myKey”]
的简写。他们都编译成同样的东西。
答案 3 :(得分:0)
正如其他人所说,你不应该比较
dictionary[@"key"]
[dictionary valueForKey: @"key"]
第二个valueForKey方法使用非常不同的键值编码(KVC)。
dictionary[@"key"]
在功能上等同于[dictionary objectForKey: @"key"]
结果是相同的,即使dictionary[@"key"]
调用的方法略有不同。
第一个dictionary[@"key"]
表单使用了新的" object literal"语法,它是Objective-C语言的最新成员。