我遇到了以下情况:
NSArray *array = @[object1, object2];
它似乎正在创建一个NSArray
,但是这个数组实例是一个自动释放的对象,还是我必须释放它?
我遇到了以下情况:
NSArray *array = @[object1, object2];
它似乎正在创建一个NSArray
,但是这个数组实例是一个自动释放的对象,还是我必须释放它?
这是 xcode 4.4 及更高版本附带的编译器中可用的新集合文字
@[object1, object2];
相当于
[NSArray arrayWithObjects:object1, object2, nil];
所以是的,它是一个自动释放的对象,如果你需要保留它,你可以这样做
myRetainedArray = [@[object1, object2] retain];
这个问题对所有新文字都有很好的描述
它是用于创建数组的新 llvm 编译器的文字。编译器将其更改为:
NSArray *array = [NSArray arrayWithObjects: object1,object2,nil];
所以它返回一个自动释放的对象。
谷歌搜索带来了更多信息: