我在做什么是在后台创建大量的UIView并将它们保存在NSMutableArray中以便稍后使用。但是,当我关闭视图控制器时,我检查Xcode中的内存,似乎有些内存没有被释放。我检查了;视图控制器正在被释放。
请检查:
在几次显示和解除视图控制器之后发生这种情况。其中一些正在被释放,但不是全部。 感谢。
答案 0 :(得分:5)
取消选中Edit Scheme下的Enable Zombie Objects
选项。然后再试一次。
僵尸是一个已被解除分配的对象,但对它的引用仍然存在,并且消息仍在发送给它
我认为此链接有更多信息供您使用 What is NSZombie?
答案 1 :(得分:1)
我想你使用了arc,因此在dealloc中明确释放它可能是有用的。
-(void)dealloc {
for(UIView *vw in self.arrayOfViews) {
vw = nil;
}
self.arrayOfViews = nil;
}
使用dealloc有点像过去(弧前),但它可以帮助你更好地管理内存。
!重要! - >使用arc时,切勿致电[super dealloc];
。
答案 2 :(得分:0)
在dealloc方法中,释放数组中的所有视图。
在你的控制器dealloc方法中调用下面的方法
- (void)releaseViewArray
{
// Releasing views in the array
for (UIView *view in _viewArray) {
[view release];
}
// Releasing the array that holding the views
[_viewArray release];
}