这些NSMutableArray初始化有何不同?

时间:2009-10-02 19:46:56

标签: iphone iphone-sdk-3.0 nsmutablearray

在我的代码的一个分支中,我之前使用过这个

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

上面的数组用于填充UITableVew。

正因如此,我改用了以下内容:

NSMutableArray *array1 = [NSMutableArray arrayWithCapacity:0]

我的代码没有进行任何其他更改)每当我尝试向下滚动UITableView中的列表时,我的应用程序都会崩溃。

看起来我的数组未正确初始化。有人能解释为什么会这样吗?这两种方法不同,是否分配了底层内存空间?

1 个答案:

答案 0 :(得分:2)

您的第二行代码未保留NSArray,导致崩溃。致电[array1 retain]后,您需要致电arrayWithCapacity:

这篇文章中有很多有用的信息:Understanding reference counting with Cocoa / Objective C

通常,如果您正在调用一个不以“new”或“init”开头的类方法(例如arrayWithCapacity),您通常可以假设返回的对象将被自动释放。