使用@ [阵列的,项目]对[NSArray的arrayWithObjects:](Using @[a

2019-07-18 17:42发布

有没有之间的差异

NSArray *myArray = @[objectOne, objectTwo, objectThree];

NSArray *myArray = [NSArray arrayWithObjects:objectOne, objectTwo, objectThree, nil];

是优于其他?

Answer 1:

他们几乎是相同的,但不完全。 对铛文档Objective-C的字面规定:

数组常量表达式扩展到呼叫+[NSArray arrayWithObjects:count:] ,验证所有的对象都是非为零。 一个可变形式, +[NSArray arrayWithObjects:]采用零作为参数列表终止子,这可导致畸形阵列对象。

所以

NSArray *myArray = @[objectOne, objectTwo, objectThree];

将抛出一个运行时异常,如果objectTwo == nil ,但

NSArray *myArray = [NSArray arrayWithObjects:objectOne, objectTwo, objectThree, nil];

将创建与在这种情况下一个元素的数组。



Answer 2:

号在编译时@[...]文字将变为arrayWithObjects:

唯一的区别是, @[...]仅在LLVM编译器的新版本的支持。



文章来源: Using @[array, of, items] vs [NSArray arrayWithObjects:]