Bot*_*Bot 11 objective-c nsarray objective-c-literals
两者之间有区别吗?
NSArray *myArray = @[objectOne, objectTwo, objectThree];
Run Code Online (Sandbox Code Playgroud)
和
NSArray *myArray = [NSArray arrayWithObjects:objectOne, objectTwo, objectThree, nil];
Run Code Online (Sandbox Code Playgroud)
一个比另一个更受欢迎吗?
Mar*_*n R 32
它们几乎相同,但不完全相同.关于Objective-C Literals的Clang文档说明:
数组文字表达式扩展为调用
+[NSArray arrayWithObjects:count:],验证所有对象都是非零的.可变形式+[NSArray arrayWithObjects:]使用nil作为参数列表终止符,这可能导致格式错误的数组对象.
所以
NSArray *myArray = @[objectOne, objectTwo, objectThree];
Run Code Online (Sandbox Code Playgroud)
如果objectTwo == nil,但会抛出运行时异常
NSArray *myArray = [NSArray arrayWithObjects:objectOne, objectTwo, objectThree, nil];
Run Code Online (Sandbox Code Playgroud)
在这种情况下会创建一个包含一个元素的数组.
| 归档时间: |
|
| 查看次数: |
3287 次 |
| 最近记录: |