2

我今天发现,动态创建数组和字典有一种不那么乏味的方法:

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

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

这是对 Objective-c 语言的一个相当新的补充吗?这些结构的名称是什么?

4

3 回答 3

4

Xcode 4.4 的新功能。我听说它们被称为集合文字。

编辑添加:

您还可以将 NSArray 和 NSDictionary 的成员引用为array[1]dictionary[@"key"]。创建语法向后兼容,因为它在构建时完全扩展。访问器语法不是因为它涉及对运行时的更改。

于 2012-08-03T20:34:02.033 回答
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 回答
2

它们是 Apple 的 LLVM 4.0 编译器的一部分,该编译器在 XCode 4.4 中提供。

更多信息可以LLVM 网站的“语法添加”部分下找到。还存在其他新的文字语法,这也记录在网站上。

于 2012-08-03T20:35:12.303 回答