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