Rak*_*esh 2 cocoa objective-c nsarray objective-c-literals
我在网上很多地方看到过,甚至在苹果文档中,当数组以下列格式表示时:
@[obj1,obj2]
Run Code Online (Sandbox Code Playgroud)
例如; 在谓词编程指南中有一个这样的语句:
NSCompoundPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[greaterThanPredicate, lessThanPredicate]];
Run Code Online (Sandbox Code Playgroud)
但是当我在代码中编写相同内容时,我会得到一个'意外的@in program'(如预期的那样)编译器错误.这只是一种表示数组的方式还是我错过了什么?
das*_*ght 11
这是一种相对较新的语法,仅适用于包含clang 3.3或更新版本的Xcode.
这个
@[greaterThanPredicate, lessThanPredicate]
Run Code Online (Sandbox Code Playgroud)
在逻辑上等同于*:
[NSArray arrayWithObjects:greaterThanPredicate, lessThanPredicate, nil]
Run Code Online (Sandbox Code Playgroud)
您始终可以使用旧语法替换新语法,而不会丢失功能.
编辑(回应Nikolai Ruhe的评论)Apple有一个与开源版本不同的版本方案.引入该功能的正确版本号是:Apple 4.0,clang 3.1.
arrayWithObjects:count:.感谢newacct的纠正.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |