如何在没有内存泄漏的情况下创建以下数组:
它应该是一个包含数组的数组
arr = [[NSMutableArray alloc] initWithObjects:
[[NSMutableArray alloc] init],
[[NSMutableArray alloc] init],
[[NSMutableArray alloc] init],
[[NSMutableArray alloc] init],
[[NSMutableArray alloc] init],
[[NSMutableArray alloc] init],
[[NSMutableArray alloc] init], nil];
答案 0 :(得分:3)
使用[NSMutableArray array]
代替,这会创建一个您不必担心的自动释放对象:
arr = [NSMutableArray arrayWithObjects:
[NSMutableArray array],
[NSMutableArray array],
[NSMutableArray array],
[NSMutableArray array],
[NSMutableArray array],
[NSMutableArray array],
[NSMutableArray array], nil];
请注意,如果要保留,则必须保留/释放arr
。
如果您真正想要的只是数组数组,我有一个名为RJGrid
的类,它将为您执行此操作,并且比多个NSMutableArrays
更快(链接列表查找速度慢)。
您可以在我的保管箱中下载课程here。它使用ARC,但如果你想让我这样做,它很简单就可以转换为引用计数环境。
答案 1 :(得分:1)
如果您使用ARC,则无需执行任何操作。如果您不使用ARC,那么您可以自动释放阵列:
arr = [[NSMutableArray alloc] initWithObjects:
[[[NSMutableArray alloc] init] autorelease],
[[[NSMutableArray alloc] init] autorelease],
[[[NSMutableArray alloc] init] autorelease],
[[[NSMutableArray alloc] init] autorelease],
[[[NSMutableArray alloc] init] autorelease],
[[[NSMutableArray alloc] init] autorelease],
[[[NSMutableArray alloc] init] autorelease], nil];
答案 2 :(得分:1)