我今天发现,动态创建数组和字典有一种不那么乏味的方法:
NSArray *myArray = @[@"one", @"two", @"three"];
NSDictionary *myDict = @{@"key": @"value", @"key2": @"value2"};
这是对 Objective-c 语言的一个相当新的补充吗?这些结构的名称是什么?
我今天发现,动态创建数组和字典有一种不那么乏味的方法:
NSArray *myArray = @[@"one", @"two", @"three"];
NSDictionary *myDict = @{@"key": @"value", @"key2": @"value2"};
这是对 Objective-c 语言的一个相当新的补充吗?这些结构的名称是什么?
Xcode 4.4 的新功能。我听说它们被称为集合文字。
编辑添加:
您还可以将 NSArray 和 NSDictionary 的成员引用为array[1]
和dictionary[@"key"]
。创建语法向后兼容,因为它在构建时完全扩展。访问器语法不是因为它涉及对运行时的更改。
是的..还有其他一些例子:
// 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上看到它!有点酷:)
它们是 Apple 的 LLVM 4.0 编译器的一部分,该编译器在 XCode 4.4 中提供。
更多信息可以在LLVM 网站的“语法添加”部分下找到。还存在其他新的文字语法,这也记录在网站上。