7

我遇到了以下情况:

NSArray *array = @[object1, object2];

它似乎正在创建一个NSArray,但是这个数组实例是一个自动释放的对象,还是我必须释放它?

4

2 回答 2

9

这是 xcode 4.4 及更高版本附带的编译器中可用的新集合文字

@[object1, object2];

相当于

[NSArray arrayWithObjects:object1, object2, nil];

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

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

这个问题对所有新文字都有很好的描述

于 2012-08-01T12:55:39.517 回答
0

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

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

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

谷歌搜索带来了更多信息:

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

于 2012-08-01T12:57:08.740 回答