4

我见过

NSArray *objectsToShare = @[objects];

在查看一些示例代码时。

这里是什么意思@[objects]

4

4 回答 4

8
NSArray *objectsToShare = @[objects];

是相同的

NSArray *objectsToShare = [NSArray arrayWithObjects:objects count:count];
于 2013-03-26T11:15:08.057 回答
6

它在 Objective-C 中也称为 Literals

Examples
Immutable array expression:
NSArray *array = @[ @"Hello", NSApp, [NSNumber numberWithInt:42] ];

使用 AppleLLVM编译器时,也可以使用文字语法而不是方法来创建4.0 or later数组、字典和数字。 [22] (NSArray, NSDictionary, NSNumber classes)文字语法使用@ 符号[], {}, (),.

没有文字的例子:

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
               ;

有关更多信息,请阅读本教程

于 2013-03-26T11:24:11.760 回答
0

它使用一个对象创建一个数组,即对象“对象”

于 2013-03-26T11:15:00.920 回答
0

这是添加到 LLVM 编译器的新功能。您可以创建一个数组

NSArray *array = @[object1, ...];

请注意,您不能创建可变数组,并且您不需要以 . 结尾的对象列表nil。观看 WWDC 2012 视频“LLVM 的新功能”。

于 2013-03-26T22:09:06.073 回答