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

S.J*_*Lim 7 memory-management objective-c objective-c-literals

我遇到了以下情况:

NSArray *array = @[object1, object2];
Run Code Online (Sandbox Code Playgroud)

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

wat*_*n12 9

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

@[object1, object2];
Run Code Online (Sandbox Code Playgroud)

相当于

[NSArray arrayWithObjects:object1, object2, nil];
Run Code Online (Sandbox Code Playgroud)

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

myRetainedArray = [@[object1, object2] retain];
Run Code Online (Sandbox Code Playgroud)

这个问题很好地描述了所有新文字