5

创建数组(或使用其各自工厂方法的任何其他集合)的优缺点是什么

[[NSArray alloc] init]

对比

[NSArray array]

在目标 C? 似乎后一种工厂方法让我们不必担心内存管理,所以我很好奇使用 alloc + init 是否有任何意义,尽管我现在对这两者之间的所有差异更感兴趣,以及为什么会选择一个而不是另一个。

4

2 回答 2

5

在 ARC 之前,有一个关键的区别。alloc/init案例返回一个保留的对象,而array案例返回一个自动释放的对象。

使用 ARC,差异就不那么重要了。可能第一种情况是头发效率更高,但在大多数情况下它们是可以互换的。

于 2012-11-01T03:20:38.200 回答
1

在第一个中,您拥有数组对象的所有权并且您必须释放它们。

NSMutableArray* p = [[NSMutableArray alloc] init];

[p 释放];

& 最后一个你不需要释放,因为你没有数组对象的所有权。

NSMutableArray* p = [NSMutableArray]; //this is autoreleased

如果您在此调用 release,那么它将使您的应用程序崩溃。

于 2012-11-01T03:32:58.490 回答