有没有之间的差异
NSArray *myArray = @[objectOne, objectTwo, objectThree];
和
NSArray *myArray = [NSArray arrayWithObjects:objectOne, objectTwo, objectThree, nil];
是优于其他?
有没有之间的差异
NSArray *myArray = @[objectOne, objectTwo, objectThree];
和
NSArray *myArray = [NSArray arrayWithObjects:objectOne, objectTwo, objectThree, nil];
是优于其他?
他们几乎是相同的,但不完全。 对铛文档Objective-C的字面规定:
数组常量表达式扩展到呼叫
+[NSArray arrayWithObjects:count:]
,验证所有的对象都是非为零。 一个可变形式,+[NSArray arrayWithObjects:]
采用零作为参数列表终止子,这可导致畸形阵列对象。
所以
NSArray *myArray = @[objectOne, objectTwo, objectThree];
将抛出一个运行时异常,如果objectTwo == nil
,但
NSArray *myArray = [NSArray arrayWithObjects:objectOne, objectTwo, objectThree, nil];
将创建与在这种情况下一个元素的数组。
号在编译时@[...]
文字将变为arrayWithObjects:
唯一的区别是, @[...]
仅在LLVM编译器的新版本的支持。