0

可能重复:
NSArray 初始化方法

初始化数组有什么区别

NSArray * array = [NSArray array];

NSArray * array = @[];
4

3 回答 3

2

这两个表达式通常是等价的。

Clang 的文档列出了对象文字的警告:

使用字面量或盒装表达式语法创建的对象不保证在运行时是唯一的,但也不保证它们是新分配的。因此,直接比较对象字面量的位置(使用 ==、!=、<、<=、> 或 >=)的结果是不明确的。这通常是旨在调用isEqual:方法(或compare:方法)的代码中的一个简单错误。

正如文档所述,上面列出的警告仅在对象之间使用直接比较运算符时才会出现,这几乎总是不是预期的操作。这种行为应该无关紧要,因此两者几乎总是可以互换使用。

于 2013-01-23T17:31:43.493 回答
1

@[]现代Objective C[NSArray array]中的快捷方式

请检查The_Basics_of_Modern_Objective-C以获得更好的理解。

据我所知,当您使用 @[] 时,这将等同于相应的 Class 方法。方法:

@[]          = [NSArray array];
@[@"M",@"P"] = [NSArray arrayWithObjects:@"M",@"P",nil];
于 2013-01-23T17:37:14.283 回答
0

这两者是相似的。

[NSArray array]@[]创建并返回一个空数组。

@[]是 Objective-C 中添加的一个新特性。它将几种对象装箱,并为您提供快捷表示法的灵活性。

使用 Apple LLVM 编译器 4.0 或更高版本时,可以使用文字语法而不是方法来创建数组、字典和数字(NSArray、NSDictionary、NSNumber 类)。字面量语法使用 @ 符号与 []、{}、() 组合来分别创建上述类。

更多参考这里文字

于 2013-01-23T17:31:09.320 回答