@ [obj1,obj2]创建了什么样的对象?

时间:2012-08-01 12:53:02

标签: objective-c memory-management objective-c-literals

我遇到了以下情况:

NSArray *array = @[object1, object2];

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

2 个答案:

答案 0 :(得分:9)

这是xcode 4.4及更高版本

附带的编译器中可用的新集合文字
@[object1, object2];

相当于

[NSArray arrayWithObjects:object1, object2, nil];

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

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

this question对所有新文字都有很好的描述

答案 1 :(得分:0)

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

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

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

Google搜索带来了更多信息:

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