我发现看到一个特定的代码,
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
注释@[indexPath]
的名称是什么,我从来没有看到过这种情况。因为它在Objective-C中引入。我知道它取代了[NSArray arrayWithObjects:indexPath,nil]
,还有其他任何功能吗?使用它的功能是什么(嗯,除了更短)?
感谢。
答案 0 :(得分:2)
这是Objective-C中使用LLVM的“Literals”的扩展。除了创建数组之外,我不相信它会做任何其他事情。它们随Apple LLVM 4.0一起提供。
如果你想看到所有可用的文字,请查看http://clang.llvm.org/docs/ObjectiveCLiterals.html - 它们非常方便。
答案 1 :(得分:1)
这是在Xcode 4.4中使用文字的新方法 我猜没有其他好处,但它的新编码风格
很少有人提及,我希望这可以解决你的一些疑问。
int a = 2;
int b = 5;
NSNumber *n = @(a*b);
@blah
被称为“文字”语法。您可以使用它来创建包含文字的对象,如char,BOOL,int等,这意味着:
@42
是一个盒装的@'c'
是一个盒装字符@"foo"
是一个盒装的char * @42ull
是一个盒装的无符号长多@YES
是一个盒装的BOOL at符号后面的所有内容都是原始值。 MyEnumValue
不是文字。这是一个象征。为了适应这种情况,引入了通用的拳击语法:
@(MyEnumValue)
你可以在括号内放一堆东西;在大多数情况下,任何变量或表达都应该起作用。