【发布时间】:2013-01-23 15:45:09
【问题描述】:
用初始化数组有什么区别
NSArray * array = [NSArray array];
和
NSArray * array = @[];
【问题讨论】:
标签: ios objective-c initialization nsarray
用初始化数组有什么区别
NSArray * array = [NSArray array];
和
NSArray * array = @[];
【问题讨论】:
标签: ios objective-c initialization nsarray
@[] 是以下的简写:
id a = nil;
NSArray* array = [NSArray arrayWithObjects:&a count:0];
对于所有意图和目的而言,这实际上只是 [NSArray array] 的简写。
这是在特定版本的编译器中添加的一项功能(实际上并不需要对 this 特定语法的运行时支持。
它一点也不像@"" 的简写,因为@"" 会产生一个编译时间常数,并且会导致在运行时没有消息传递时间>。事实上,@""(任何@"sequence")是一个特例,它发出一个编译时间常数,在运行时实现零消息传递;零活力。 @"..." 更类似于 Objective-C 类,而不是对象的常规实例。
【讨论】:
NSArray * array = @[];是NSArray * array = [NSArray array];的新方式
【讨论】:
NSString *string = @"";一样”——我不这么认为。前者创建一个数组,后者创建一个字符串。