【发布时间】:2013-03-26 11:13:48
【问题描述】:
见过
NSArray *objectsToShare = @[objects];
查看一些示例代码时。
这里@[objects]是什么意思?
【问题讨论】:
标签: iphone objective-c ios5 ios6 nsarray
见过
NSArray *objectsToShare = @[objects];
查看一些示例代码时。
这里@[objects]是什么意思?
【问题讨论】:
标签: iphone objective-c ios5 ios6 nsarray
NSArray *objectsToShare = @[objects];
与
相同NSArray *objectsToShare = [NSArray arrayWithObjects:objects count:count];
【讨论】:
initWithObjects不一样,而是arrayWithObjects:count:(比较stackoverflow.com/a/14527582/1187415)。它返回一个自动释放的对象,列表中nil的处理方式不同。
Examples
Immutable array expression:
NSArray *array = @[ @"Hello", NSApp, [NSNumber numberWithInt:42] ];
当使用 Apple LLVM 编译器 4.0 or later 时,数组、字典和数字 (NSArray, NSDictionary, NSNumber classes) 也可以使用文字语法而不是方法来创建。[22]文字语法使用 @ 符号 与 [], {}, (), 结合。
没有文字的例子:
NSArray *myArray = [NSArray arrayWithObject:someObject];
NSDictionary *myDictionary = [NSDictionary dictionaryWithObject:someObject forKey:@"key"];
NSNumber *myNumber = [NSNumber numberWithInt:myInt];
文字示例:
NSArray *myArray = @[ someObject ];
NSDictionary *myDictionary = @{ @"key" : someObject };
NSNumber *myNumber = @(myInt);
objc-at-expression : '@' (string-literal | encode-literal | selector-literal | protocol-literal | object-literal)
;
object-literal : ('+' | '-')? numeric-constant
| character-constant
| boolean-constant
| array-literal
| dictionary-literal
;
boolean-constant : '__objc_yes' | '__objc_no' | 'true' | 'false' /* boolean keywords. */
;
array-literal : '[' assignment-expression-list ']'
;
assignment-expression-list : assignment-expression (',' assignment-expression-list)?
| /* empty */
;
dictionary-literal : '{' key-value-list '}'
;
key-value-list : key-value-pair (',' key-value-list)?
| /* empty */
;
key-value-pair : assignment-expression ':' assignment-expression
;
欲了解更多信息Read this Tutorial
【讨论】:
它用一个对象创建一个数组,即对象“objects”
【讨论】:
这是添加到 LLVM 编译器的新功能。您可以使用
创建一个数组NSArray *array = @[object1, ...];
请注意,您不能创建可变数组,并且您不需要以nil 结束对象列表。观看 WWDC 2012 视频“LLVM 的新功能”。
【讨论】: