0

我已经疯狂地试图用 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];

谢谢

4

1 回答 1

3

想到的第一个问题是为什么你要初始化并同时制作一个可变副本 initWithArray 提供了一个具有新内存的新实例并且你可以使用它。那么为什么要创建它的可变副本?

采用

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

这给了你一个可变的实例。所以无论如何都不需要调用 mutablecopy

或者

NSMutableArray *mutablearray = [[array mutableCopy]autorelease];
于 2013-06-03T12:24:28.203 回答