2012-08-01 72 views

回答

9

这是一个新的集合字面在和Xcode 4.4及以上

@[object1, object2]; 

出货编译器可等同于

[NSArray arrayWithObjects:object1, object2, nil]; 

所以是的,它是一个自动释放的对象,如果你需要这个要保留,你可以做

myRetainedArray = [@[object1, object2] retain]; 

this question已经去了od所有新文字的描述

+1

而男人是不是真棒!需要一些紫色在我的代码大声笑 – 2012-08-01 12:56:23

+0

如果我需要创建一个不autorelease对象,不能使用上面的文字? – 2012-08-01 13:14:40

+0

你仍然可以使用它,只需保留阵列 – wattson12 2012-08-01 13:15:10

0

这是用于创建数组的新的llvm编译器的文字。编译器将其更改为:

NSArray *array = [NSArray arrayWithObjects: object1,object2,nil]; 

所以它正在返回一个自动释放对象。

谷歌搜索带来了进一步的信息:

http://clang.llvm.org/docs/ObjectiveCLiterals.html

+1

“编译器将其更改为:”不,它将其更改为使用'arrayWithObjects:count:'。 – user102008 2012-11-13 00:58:57