的确@什么样的对象[OBJ1,OBJ2]创建?(What kind of object does @

2019-06-26 16:13发布

我遇到了以下几点:

NSArray *array = @[object1, object2];

这似乎是创建一个NSArray ,但就是这个数组实例的自动释放的对象,或者我必须释放呢?

Answer 1:

这是一个新的集合字面可在和Xcode 4.4及以上船舶的编译器

@[object1, object2];

相当于

[NSArray arrayWithObjects:object1, object2, nil];

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

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

这个问题有各种新文字的一个很好的说明



Answer 2:

这是新的LLVM编译器的字面创建数组。 编译器会将此改为:

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

因此,它是返回一个自动释放的对象。

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

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



文章来源: What kind of object does @[obj1, obj2] create?