使用init和mutableCopy的NSMutableArray,如何自动释放?

时间:2013-06-03 12:21:24

标签: ios nsmutablearray autorelease

我试图通过NSMutableArray找到漏洞而疯狂:

NSMutableArray *mutablearray =[[[[NSMutableArray alloc] initWithArray: array] mutableCopy] autorelease];

最后我理解我需要自动释放两次我的mutablearray,因为initWithArray是+1而mutableCopy也是+1。

然后我在做:

NSMutableArray *mutablearray = [[[NSMutableArray alloc] initWithArray: array] autorelease];
mutablearray = [[mutablearray mutableCopy] autorelease];

但是,这样做是对的吗?:

NSMutableArray *mutablearray = [[[[[NSMutableArray alloc] initWithArray: array] autorelease] mutableCopy] autorelease];

由于

1 个答案:

答案 0 :(得分:3)

第一个问题是你为什么要初始化并同时制作一个可变副本initWithArray给出一个带有新内存的新实例,你可以使用它。那么为什么要创建它的可变副本呢?

使用

NSMutableArray *mutablearray = [[[NSMutableArray alloc] initWithArray: array]autorelease];

这给你一个可变的实例。所以不需要调用mutablecopy

OR

NSMutableArray *mutablearray = [[array mutableCopy]autorelease];