我今天发现,动态创建数组和字典的方式要少得多:
NSArray *myArray = @[@"one", @"two", @"three"];
NSDictionary *myDict = @{@"key": @"value", @"key2": @"value2"};
这是对objective-c语言的一个相当新的补充吗?这些结构的名称是什么?
答案 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上看到它!有点酷:))