[NSArray array] 和 [[NSArray alloc] init] 有什么区别

Whats the difference between [NSArray array] and [[NSArray alloc] init]

控制器 dealloc 时,使用 [NSArray array] 方法创建的变量未完全 dealloc

array 是一个 class 方法,它本身会生成一个自动释放的数组,这意味着您不必(也不应该)手动释放它。由于 iOS 5 带有 ARC,您不必担心释放处理。

[NSArray Array] 甚至无法编译。你可能是指 [NSArray 数组]。

[NSArray array] 是一个方便的构造函数,它 returns 是一个自动释放的对象。 Cocoa 和人们自己的代码中有很多方便的构造函数。

坦率地说,你的问题的其余部分没有意义。

[NSArray Array] class 方法本身会生成一个自动释放的数组,这意味着您不必(也不应该)手动 release 它。

[NSArray Array]是一个构造函数售卖

但是来到ARC(Automatic reference counting)之后就没有了release。所以 alloc-init 和构造函数出售 autoreleased 对象之间的区别实际上变得无关紧要了。

[NSArray array] 这种类型的方法在 objective c 中称为便捷方法,其中 returns 我们不拥有的对象,它们是自动释放对象。但是如果你想在这种情况下拥有对象的所有权,你必须使用 alloc init 方法来创建任何对象/

弧下

[NSArray array][[NSArray alloc] init] 做同样的事情。 Return 一个不可变的空数组。 ARC 负责内存管理。

无 ARC。

[NSArray array] returns 将自动释放的数组。 [[NSArray alloc] init] returns 一个数组,当你不再需要它时,你必须通过调用 release 来处理内存管理。

备注

实例化空不可变数组的用处不大。检查 NSArray's 其他将项目作为参数的初始化程序。在这种情况下,您有一个包含项目的不可变数组。但同样,这完全取决于您的需求。