0

我碰巧看到一个特定的代码,

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:0];
[self.tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];

注释的名称是什么@[indexPath],我从来没有见过这种。并且自从它在objective-C中引入以来。我知道它取代了[NSArray arrayWithObjects:indexPath,nil],还有其他功能吗?使用它的功能是什么(嗯,除了更短)?

谢谢。

4

2 回答 2

2

这是对带有 LLVM 的 Objective-C 中可用的“文字”的扩展。我不相信除了创建一个数组之外它不会做任何其他事情。它们随 Apple LLVM 4.0 一起提供。

如果您想查看所有可用的文字,请查看http://clang.llvm.org/docs/ObjectiveCLiterals.html - 它们非常方便。

于 2012-11-12T06:20:06.060 回答
1

这是在 Xcode 4.4 中使用文字的新方法我猜没有其他好处,但它的新编码风格

很少有参考资料,我希望这能消除您的一些疑虑。

int a = 2;
int b = 5;
NSNumber *n = @(a*b);

@blah被称为“文字”语法。您可以使用它来制作包装文字的对象,例如 char、BOOL、int 等,这意味着:

  • @42是一个装箱的 int
  • @'c'是一个盒装字符
  • @"foo"是一个盒装字符*
  • @42ull是一个盒装的 unsigned long long
  • @YES是一个盒装的 BOOL

at 符号后面的所有内容都是原始值。MyEnumValue不是文字。这是一个象征。为了适应这一点,引入了通用装箱语法:

@(MyEnumValue)

你可以在括号内放一堆东西;在大多数情况下,任何类型的变量或表达式都应该起作用。

于 2012-11-12T06:21:23.490 回答