我试图通过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];
由于
答案 0 :(得分:3)
第一个问题是你为什么要初始化并同时制作一个可变副本initWithArray给出一个带有新内存的新实例,你可以使用它。那么为什么要创建它的可变副本呢?
使用
NSMutableArray *mutablearray = [[[NSMutableArray alloc] initWithArray: array]autorelease];
这给你一个可变的实例。所以不需要调用mutablecopy
OR
NSMutableArray *mutablearray = [[array mutableCopy]autorelease];