NSArray objectAtIndex:速记

Geo*_*een 24 objective-c nsarray shorthand ios

可能重复:
Objective-C中是否有一些文字字典或数组语法?

我最近注意到一些奇怪的东西似乎在objective-c中起作用.

当我有一个阵列,

NSArray *myArray = @[@"1", @"b", @"3", @"d"];
Run Code Online (Sandbox Code Playgroud)

我通常可以访问第二个元素,

NSString *element = [myArray objectAtIndex:1]; // second element 
Run Code Online (Sandbox Code Playgroud)

但是我现在似乎也可以通过它访问它.

NSString *element = myArray[1];
Run Code Online (Sandbox Code Playgroud)

有谁知道这现在是一个定义的行为,因此可以安全使用,还是应该避免它?感谢任何能提供帮助的人!!

Ada*_*ght 29

在Clang 3.3中添加了这种语法:Objective C Literals.实质上,编译器将类型objCObj[idx]的表达式转换为表达式[objCObj objectAtIndexedSubscript:idx].它也适用于字典,您可以自由地将它用于自己的对象.

因此,假设您将使用现代版本的Objective C和适当更新的Objective C编译器(即Clang),那么使用它是完全安全的.