可能重复:
NSArray 初始化方法
初始化数组有什么区别
NSArray * array = [NSArray array];
和
NSArray * array = @[];
这两个表达式通常是等价的。
Clang 的文档列出了对象文字的警告:
使用字面量或盒装表达式语法创建的对象不保证在运行时是唯一的,但也不保证它们是新分配的。因此,直接比较对象字面量的位置(使用 ==、!=、<、<=、> 或 >=)的结果是不明确的。这通常是旨在调用
isEqual:
方法(或compare:
方法)的代码中的一个简单错误。
正如文档所述,上面列出的警告仅在对象之间使用直接比较运算符时才会出现,这几乎总是不是预期的操作。这种行为应该无关紧要,因此两者几乎总是可以互换使用。
这@[]
是现代Objective C[NSArray array]
中的快捷方式
请检查The_Basics_of_Modern_Objective-C以获得更好的理解。
据我所知,当您使用 @[] 时,这将等同于相应的 Class 方法。方法:
@[] = [NSArray array];
@[@"M",@"P"] = [NSArray arrayWithObjects:@"M",@"P",nil];