2

私は今日、その場で配列と辞書を作成するための面倒な方法がはるかに少ないことを発見しました。

NSArray *myArray = @[@"one", @"two", @"three"];

NSDictionary *myDict = @{@"key": @"value", @"key2": @"value2"};

これはobjective-c言語へのかなり新しい追加であり、これらの構成の名前は何ですか?

4

3 に答える 3

4

Xcode4.4以降の新機能。それらがコレクションリテラルと呼ばれるのを聞いたことがあります。

追加する編集:

NSArrayおよびNSDictionaryのメンバーをおよびとして参照することもできarray[1]ますdictionary[@"key"]。作成構文は、ビルド時に完全に拡張されるため、下位互換性があります。アクセサ構文は、ランタイムの変更を伴うため、そうではありません。

于 2012-08-03T20:34:02.033 に答える
2

これらは、XCode4.4で出荷されたAppleのLLVM4.0コンパイラの一部です。

詳細については、LLVMのWebサイトの「GrammarAdditions」セクションを参照してください他の新しいリテラル構文も存在します。これもWebサイトに記載されています。

于 2012-08-03T20:35:12.303 に答える
2

ええ..他のいくつかの例があります:

// character literals.
  NSNumber *theLetterZ = @'Z';          // equivalent to [NSNumber numberWithChar:'Z']

  // integral literals.
  NSNumber *fortyTwo = @42;             // equivalent to [NSNumber numberWithInt:42]
  NSNumber *fortyTwoUnsigned = @42U;    // equivalent to [NSNumber numberWithUnsignedInt:42U]
  NSNumber *fortyTwoLong = @42L;        // equivalent to [NSNumber numberWithLong:42L]
  NSNumber *fortyTwoLongLong = @42LL;   // equivalent to [NSNumber numberWithLongLong:42LL]

  // floating point literals.
  NSNumber *piFloat = @3.141592654F;    // equivalent to [NSNumber numberWithFloat:3.141592654F]
  NSNumber *piDouble = @3.1415926535;   // equivalent to [NSNumber numberWithDouble:3.1415926535]

  // BOOL literals.
  NSNumber *yesNumber = @YES;           // equivalent to [NSNumber numberWithBool:YES]
  NSNumber *noNumber = @NO;             // equivalent to [NSNumber numberWithBool:NO]

私は最初にJavaでそれを見ました!ちょっとかっこいい:)

于 2012-08-03T20:39:40.090 に答える