2012-11-12 69 views
0

我happend看到一個特定代碼,註釋@ [目的]爲NSArray的

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

什麼是註釋@[indexPath]的名字,我從來沒有看到這樣的。並且從什麼時候開始介紹Objective-C。我知道它取代了[NSArray arrayWithObjects:indexPath,nil],那其他的功能呢?這個功能的用途是什麼(好,除了更短)?

謝謝。

回答

2

這是對帶有LLVM的Objective-C中的「Literals」的擴展。除了創建數組之外,我不相信它會做其他任何事情。他們隨Apple LLVM 4.0一起提供。

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

1

它是用文字在Xcode 4.4 沒有其他好處我想,但其新的編碼

很少引用是爲風格的新方式,我希望這將清除一些你的疑惑。

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

@blah被稱爲「文字」語法。您可以使用它來使物體包裹文字,就像一個char,BOOL,INT,等等。這意味着:

  • @42是裝箱的int
  • @'c'是盒裝焦炭
  • @"foo"是盒裝字符*
  • @42ull是盒裝無符號長長
  • @YES是盒裝BOOL

at符號後面的所有內容都是原始值。 MyEnumValue不是文字。這是一個象徵。爲了適應這種情況,介紹了通用拳擊語法:

@(MyEnumValue)

你可以放了一堆的括號內的東西;大多數情況下,任何形式的變量或表達都應該起作用。

+0

文字在[Xcode 4.4]中引入(http://developer.apple.com/library/mac/ipad/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_4.html)。 – Adam

+0

+1的答案。如上所述,它在4.4中引入。 – iDev

+0

哎呀對不起:p從4.5編輯它到4.4。 –