【问题标题】:Memory leak when pushing a UIViewController推送 UIViewController 时的内存泄漏
【发布时间】:2011-03-14 16:46:09
【问题描述】:

每次我推送一个新的视图控制器,它都会增加大约 3MB。 TestVC 是一个全新的 VC,具有一种推送新版本 VC 的方法。

 UIViewController *vc = [[TestVC alloc] initWithNibName:nibName bundle:nil]; 
    [self.navigationController pushViewController:vc animated:YES];
    [vc release];

当我弹出视图控制器时,它不会释放任何内存(观看活动监视器)。

[self.navigationController popViewControllerAnimated: YES];

因此,当我在应用程序中添加导航(大约 60 个不同的页面)时,内存会不断增加。 initWithNibName 是否需要一些特别的东西。弹开的时候,是否需要以某种方式松开笔尖?

【问题讨论】:

  • 你在那里做的事情没有错。您确定问题不是由其他原因引起的吗?
  • TestVC 是什么样的?你释放你所有的财产吗?那里没有其他内存泄漏?正如 David 所说,添加/删除视图控制器的方式没有任何问题。
  • TestVC 是一个空 VC,除了一个 IBAction 调用 pushViewController 代码。 XIB 文件中有一个按钮和一个背景图像。

标签: iphone memory memory-leaks pushviewcontroller popviewcontroller


【解决方案1】:

最可能的问题是release 中的-[TestVC dealloc] 中的某些内容失败。我将首先通过检查来评估该方法。如果找不到问题,请使用 Instruments 中的 Leaks 工具来查找过度保留的特定内容。如果 Leaks 没有找到它,那么使用 Instruments 中的 heapshot 工具查看正在分配的内容。这么大的东西,应该很容易找到。在 Use Your Loaf 上使用 Heapshot 的快速概述。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-10-11
  • 1970-01-01
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
相关资源
最近更新 更多