2

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

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

上面的数组用于填充 UITableVew。

只是因为,我切换到以下内容:

NSMutableArray *array1 = [NSMutableArray arrayWithCapacity:0]

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

看起来我的数组没有正确初始化。有人可以解释为什么会发生这种情况吗?这两种方法在底层内存空间的分配方式上是否不相同?

4

1 回答 1

2

您的第二行代码没有保留导致崩溃的 NSArray。你需要打电话[array1 retain]后打电话arrayWithCapacity:

这篇文章中有很多有用的信息:用 Cocoa / Objective C 理解引用计数

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

于 2009-10-02T19:54:05.283 回答