0

たまたま1つの特定のコードを見ました。

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箱入りの無署名のロングロングです
  • @YESボックス化された BOOL です

アットマークに続くものはすべてプリミティブ値です。MyEnumValueはリテラルではありません。シンボルです。これに対応するために、一般的なボクシング構文が導入されました。

@(MyEnumValue)

かっこの中にたくさんのものを入れることができます。ほとんどの場合、あらゆる種類の変数または式が機能するはずです。

于 2012-11-12T06:21:23.490 に答える