Ios 这些NSArray初始化方法有何不同?

Ios 这些NSArray初始化方法有何不同?,ios,objective-c,cocoa,Ios,Objective C,Cocoa,可能重复: 初始化数组和 NSArray * array = [NSArray array]; 及 这两者是相似的 [NSArray array]和@[]创建并返回空数组 @[]是Objective-C中添加的一项新功能。它可以装箱多种对象,并为您提供快捷方式表示法的灵活性 当使用Apple LLVM compiler 4.0或更高版本时,数组、字典和 可以使用创建数字(NSArray、NSDictionary、NSNumber类) 文本语法而不是方法。文字语法使用@符号 与[]、{}、()

可能重复:

初始化数组和

NSArray * array = [NSArray array];


这两者是相似的

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

@[]
是Objective-C中添加的一项新功能。它可以装箱多种对象,并为您提供快捷方式表示法的灵活性

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


更多参考资料,

这两者都是相似的

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

@[]
是Objective-C中添加的一项新功能。它可以装箱多种对象,并为您提供快捷方式表示法的灵活性

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


更多参考资料,

这两个表达式通常是等效的

列出了对象文字的警告:

使用literal或boxed表达式语法创建的对象不保证由运行时唯一指定,但也不保证它们是新分配的。因此,对对象文本的位置执行直接比较(使用==,!=,=)的结果定义不明确。这通常是用于调用
isEqual:
方法(或
compare:
方法)的代码中的一个简单错误


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

这两个表达式通常是等效的

列出了对象文字的警告:

使用literal或boxed表达式语法创建的对象不保证由运行时唯一指定,但也不保证它们是新分配的。因此,对对象文本的位置执行直接比较(使用==,!=,=)的结果定义不明确。这通常是用于调用
isEqual:
方法(或
compare:
方法)的代码中的一个简单错误


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

现代目标C中的
@[]
[NSArray array]
的捷径

请检查以便更好地理解

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

@[]          = [NSArray array];
@[@"M",@"P"] = [NSArray arrayWithObjects:@"M",@"P",nil];

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

请检查以便更好地理解

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

@[]          = [NSArray array];
@[@"M",@"P"] = [NSArray arrayWithObjects:@"M",@"P",nil];

你看过WWDC 2011的视频吗(101-欢迎公告)?它详细地描述了这段甚至更好的视频:我喜欢@[]…而且,在发布之前搜索这个网站也不会有什么坏处。你看过WWDC 2011视频(101-欢迎发布的事情)吗?它详细描述了这段甚至更好的视频:我喜欢@[]…而且,在发布之前搜索这个网站也不会有什么坏处。