在我的代码的一个分支中,我之前使用过这个
NSMutableArray *array1 = [[NSMutableArray alloc] init];
上面的数组用于填充UITableVew。
正因如此,我改用了以下内容:
NSMutableArray *array1 = [NSMutableArray arrayWithCapacity:0]
我的代码没有进行任何其他更改)每当我尝试向下滚动UITableView中的列表时,我的应用程序都会崩溃。
看起来我的数组未正确初始化。有人能解释为什么会这样吗?这两种方法不同,是否分配了底层内存空间?
答案 0 :(得分:2)
您的第二行代码未保留NSArray,导致崩溃。致电[array1 retain]
后,您需要致电arrayWithCapacity:
。
这篇文章中有很多有用的信息:Understanding reference counting with Cocoa / Objective C
通常,如果您正在调用一个不以“new”或“init”开头的类方法(例如arrayWithCapacity
),您通常可以假设返回的对象将被自动释放。