Iphone - 发布视图,没有更多的可用内存

时间:2009-08-10 08:19:19

标签: iphone xcode memory-management

-(id)viewWillDisappear:(BOOL)animated
{
report_memory_str(@"BEFORE RELEASE viewWillDisappear");
self.view = nil;
report_memory_str(@"AFTER RELEASE viewWillDisappear");
}

当我的视图消失时,我尝试在推送到另一个控制器之前释放当前视图, 我没有更多的免费记忆,为什么?如何获得更多的免费记忆?

2009-08-10 09:51:31.263 App[4622:207] BEFORE RELEASE viewWillDisappear -- Memory in use (in bytes): 7880704
2009-08-10 09:51:31.280 App[4622:207] AFTER RELEASE viewWillDisappear -- Memory in use (in bytes): 7884800

2 个答案:

答案 0 :(得分:0)

我会在viewDidDisappear:而不是viewWillDisappear:中发布视图。如果更改已设置动画,则在删除视图之前将需要该视图。我不确定superview是否保留并发布它的子视图,但这可能是为什么当视图仍然在视图层次结构中时,为什么你的视图不会被立即删除。

你可以尝试

  • 几秒钟后检查已用内存。
  • 使用Leaks Performance Tool运行以查看对象是否被释放或泄漏。
  • 检查您是否实际以其存取方法释放视图。

答案 1 :(得分:0)

仅仅因为你调用release,并不意味着该对象已经被释放。如果保留计数为0,则标记为取消分配。也许在你试图释放的对象的dealloc上设置一个断点,看看它是否在你的内存检查之前或之后被调用。