我在网上很多地方看到过,甚至在苹果文档中,当数组以下列格式表示时:
@[obj1,obj2]
例如;在谓词编程指南中有一个这样的声明:
NSCompoundPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[greaterThanPredicate, lessThanPredicate]];
但是当我在代码中编写相同内容时,我得到一个'意外@在程序中'(如预期的那样)编译器错误。这只是表示数组的一种方式还是我错过了什么?
答案 0 :(得分:11)
这是relatively new syntax,仅适用于包含clang 3.3或更新版本的Xcode。
此
@[greaterThanPredicate, lessThanPredicate]
在逻辑上等同于 * :
[NSArray arrayWithObjects:greaterThanPredicate, lessThanPredicate, nil]
您始终可以使用旧语法替换新语法而不会丢失功能。
编辑(响应Nikolai Ruhe的评论)Apple拥有与开源版本不同的版本方案。引入该功能的正确版本号是:Apple 4.0,clang 3.1。
arrayWithObjects:count:
的调用。感谢newacct进行更正。