从什么时候开始我们为NSArray和NSDictionary创建了这样有用的创建者

时间:2012-08-03 20:31:47

标签: iphone objective-c ios cocoa-touch

我今天发现,动态创建数组和字典的方式要少得多:

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

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

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

3 个答案:

答案 0 :(得分:4)

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

编辑添加:

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

Ye ..有一些other examples

// 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上看到它!有点酷:))