我有一个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];
这就是发生泄漏的地方。如果我评论此行,则不会出现泄漏。所以我想我的对象做错了什么?
答案 0 :(得分:2)
似乎问题已经解决......
a)我没有意识到,当我使用乐器时,应用程序在发布之前没有编译 - 因此,我使用乐器时所做的一些更改没有生效。所以现在我首先构建并在更改后运行然后在工具中运行它。
因此,我真的不知道是什么解决了这个问题。但可能是我的对象中的dealloc方法错了。 我正在使用:[super dealloc];
[myProperty release];
而不是相反:
[myProperty release];
[super dealloc];
感谢您的帮助!
答案 1 :(得分:1)
myObject是否有任何保留的属性?如果是这样,你是否在dealloc消息中将它们设置为nil?如果没有,当它被解除分配时,它不会释放其属性设置为的对象。