NSMutableArray - removeallobjects产生泄漏

时间:2010-07-30 14:32:54

标签: iphone memory-leaks nsmutablearray

我有一个mutableArray,我填充了对象。当我尝试重新填充数组时,我首先使用removeAllObjects - 这会产生内存泄漏......

对象的属性在dealloc上合成,保留和释放。

Array在viewDidLoad上初始化如下:

theArray = [[NSMutableArray alloc] initWithCapacity:10];

......它保留并合成。 (@property (nonatomic, retain) NSMutableArray *theArray

我在这样的while循环中添加对象:

myObject *theObject = [[myObject alloc] init];

theObject.someProperty = @"theprop";

[theArray addObject: theObject];

[theObject release];

然后在下一次调用方法时,我删除所有这样的对象:

[theArray removeAllObjects];

这就是发生泄漏的地方。如果我评论此行,则不会出现泄漏。所以我想我的对象做错了什么?

2 个答案:

答案 0 :(得分:2)

似乎问题已经解决......

a)我没有意识到,当我使用乐器时,应用程序在发布之前没有编译 - 因此,我使用乐器时所做的一些更改没有生效。所以现在我首先构建并在更改后运行然后在工具中运行它。

因此,我真的不知道是什么解决了这个问题。但可能是我的对象中的dealloc方法错了。 我正在使用:

[super dealloc];

[myProperty release];

而不是相反:

[myProperty release];
[super dealloc];

感谢您的帮助!

答案 1 :(得分:1)

myObject是否有任何保留的属性?如果是这样,你是否在dealloc消息中将它们设置为nil?如果没有,当它被解除分配时,它不会释放其属性设置为的对象。