我最近开始使用Faux Pas(http://fauxpasapp.com/),对于我的项目,我多次收到以下警告:
旧的,详细的Objective-C语法
-[NSDictionary objectForKey:] is called. Consider using an Objective-C subscript expression instead.
我不确定下标表达是什么,而且我没有太多运气在其上找到任何东西。我很好奇这里是否有人可以提供帮助。
谢谢!
答案 0 :(得分:4)
没有任何性能差异,只是文字语法更清晰,更简洁,并且已经有好几年了。
如果当前代码如下:
id var = [dictionary objectForKey:@"key"];
将其替换为:
id var = dictionary[@"key"];
答案 1 :(得分:4)
通常你会写这样的东西:
NSDictionary *dictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithInteger:42] forKey:@"foo"];
id value = [dictionary objectForKey:@"foo"];
现在你会写这样的东西:
NSDictionary *dictionary = @{@"foo": @42};
id value = dictionary[@"foo"];
其中,我认为你会同意的更简单,更好看。
有关Object Subscripting的一些很好的信息可以在NSHipster
找到答案 2 :(得分:1)
您想了解Objective-C 2.0。最好的方法是直接找到来源:
http://clang.llvm.org/docs/ObjectiveCLiterals.html
正如您所看到的,引入了许多语言功能:NSNumber文字和“拳击”表达式,以及NSArray和NSDictionary(以及您喜欢的自己的类)的下标。这被认为是“现代”的方式。
Xcode会将您的代码重构为“现代Objective-C”(请参阅编辑>重构),这样您就可以在不做任何工作的情况下实现代码的现代化!