【发布时间】:2013-06-03 12:21:24
【问题描述】:
我已经疯狂地试图用 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];
谢谢
【问题讨论】:
-
创建
NSMutableArray、制作可变副本并丢弃原始可变对象有什么意义?您真的不需要制作可变对象的可变副本。使用[array mutableCopy]或[[NSMutableArray alloc] initWithArray:array]。非此即彼。不是两者。 -
当然你是对的,但我这样做是因为我记得过去尝试从 NSUserDefaults
NSMutableArray *mutablearray = [[[NSMutableArray alloc] initWithArray: [userDefaults objectForKey:@"KEY"]] autorelease];@PartiallyFinite 获取数组时遇到的一些问题感谢您的回复! -
你不能用
[[userDefaults objectForKey:@"KEY"] mutableCopy]吗? -
是的,当然! :) 非常感谢!
标签: ios nsmutablearray autorelease