【问题标题】:Abandoned Memory, Leaks, Navigation Controller废弃内存、泄漏、导航控制器
【发布时间】:2012-02-29 22:20:17
【问题描述】:

我无法理解我的应用程序中的这种行为,我正在认真考虑现在烧掉我的 mac 并开始为儿童写故事书。

我有一个普通的导航控制器,我从中推送和弹出视图控制器。

我正在视图之间进行基本转换,并且我正在实现我保留或复制或其他任何内容的所有内容。但是 Instruments 仍然识别出废弃的内存,并说那条线是造成这种情况的原因。 我无法理解。我忘记了什么? 在 Area2 中,我有几个出口和一个 UIImageVIew,我是否需要以某种方式实现它们?

还有一件事,如果使用泄漏检查器,同一行被识别为泄漏.. 真的,我有能力摧毁整个世界!

请,有人可以帮助我并告诉我我做错了什么和/或忘记了吗?

(最初我有 self.navigationController 而不是 delegate.navigationController,但问题发生了!)

就这个:

#进口 @界面区域2:UIViewController { IBOutlet UIButton * btBack; } #pragma mark - 导航控制器 - (IBAction)goBack:(id)sender; - (IBAction)goGaleria:(id)sender;

当我进行分析时(菜单:“产品”->“分析”Xcode 4.2)给我构建成功!

更新:

解决方案 在@mit3z 的回答中! @babbidi 回答!

【问题讨论】:

  • 尝试静态分析器,菜单:“产品”->“分析”Xcode 4.2
  • 如果您需要查看对象的保留、释放和自动释放的位置,请使用工具:在工具中运行,在分配中设置“记录引用计数”打开(您必须停止记录才能设置选项)。
  • 愚蠢的问题,但是您是否保留了从其他地方的导航控制器查询的视图控制器?
  • @DarkDust 对不起,我没听懂你的问题!

标签: objective-c ios uinavigationcontroller memory-management instruments


【解决方案1】:

如果你有你的 outlet 作为属性并且你没有在 dealloc 中释放它们 - 那么是的,你会得到一个泄漏。没有看到 Area2 @interface 声明很难判断。

【讨论】:

  • 我在你的声明中根本没有看到 UIImageView,你能在你使用/创建它的地方发布一些代码吗?
  • 我在代码中没有对它的引用,因为它只是在 xib 文件中保存了一个图像。仅用于背景图像! i43.tinypic.com/29awghv.png 如您所见,我有一些按钮,只需在 IB 中定义一个 IBAction 和图像。
  • 好的,我没有看到您的代码有任何问题,而且由于您正在查看堆快照:您如何记录它们,如果您稍等片刻会发生什么?堆增长会消失吗?运行泄漏仪器,它是否也显示任何泄漏?
  • 我只想补充一点,没有属性的网点也需要释放(在这种情况下,btBack 应该被释放),假设我们正在谈论 iOS。更多信息:stackoverflow.com/questions/1221516/…
  • 我去Area 2然后回来,将heap标记为baseline,然后重复这个过程,go-back-mark,结果和上图差不多。是的,有时会识别泄漏。这里是截图。说真的,我要疯了。我无法理解这种行为。这是我导航时 Instruments 报告的带有一些泄漏的图像。看看您是否熟悉i40.tinypic.com/2isbp74.png 并且再次确定该行是问题所在:i44.tinypic.com/fkmb74.png
猜你喜欢
  • 2019-08-18
  • 2011-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 2013-12-29
  • 2013-01-27
相关资源
最近更新 更多