【问题标题】:Finding the leak from the Xcode 4 Profiler从 Xcode 4 Profiler 中查找泄漏
【发布时间】:2011-06-13 23:03:53
【问题描述】:

我的 ipad 应用程序收到 1 级内存警告,因此我在 Xcode 4 中运行了内存泄漏分析器。果然,当我移动一个特定的滑块时,它会导致泄漏。再次移动它,另一个泄漏和泄漏的字节升级。

我想知道 Xcode 4 是否提供了一种简单的方法来具体找出哪个对象正在泄漏。我已经从滑块运动中查看了该方法;每次我使用 alloc/init 时,我都会释放它。最好知道 Xcode 在哪里找到泄漏,因为我自己找不到。

Xcode 4 文档引用了相当多的工具。但是我想知道这个文档是否没有从 Xcode 3 更新,因为这些工具不在文档提到的菜单中。

滑块动作是:

-(IBAction) sensitivity:(UISlider *)slider{

self.grid.sensitivity=slider.value;
[self.grid setNeedsDisplay];
}

这本身并不意味着内存泄漏。然而,“setNeedsDisplay”方法,这个方法很长,第一次运行时不会产生泄漏,那为什么第二次运行时会产生泄漏呢?该代码中的所有 inits/alloc 都被释放(只有 3 个对象被创建和释放)。

【问题讨论】:

  • 在这种情况下,我会说它相当明显的是它在您的滑块中或您的滑块控制的内容,如果您链​​接该代码,我们可以帮助您了解具体情况,就 Instruments 而言。 .查看其他答案。
  • 我将代码添加到问题中。

标签: xcode


【解决方案1】:

我发现从菜单运行构建/构建和分析很有用。它不会捕获所有内容,并且会标记一些错误警报,但它是开始自动泄漏检测的好(且容易)的地方。

【讨论】:

  • Xcode 4 的 Product 菜单下只有一个简单的“Analyze”选项;这是你的意思吗?当我运行它时,并没有发生太多事情。它实际上并没有在我的设备上运行我的应用程序,并且 Xcode 中的任何地方都没有显示任何分析表明它发现或分析了任何东西。
  • @ansdrewjs:不确定,我这台机器上只有 Xcode 3.2.5。在我的菜单中,它位于 Build/ 下,该选项称为“Build and Analyze”(快捷键 shift-command-A)。您必须连接设备才能运行它。
  • 您在哪里看到分析的结果?我运行了似乎是分析的程序,但程序似乎没有做任何事情。
  • 会弹出一个窗口,其中“结果”的数量由蓝色三角形表示。此链接截图:clang-analyzer.llvm.org/xcode.html
猜你喜欢
  • 2011-07-21
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-29
  • 2012-01-02
  • 2018-07-21
相关资源
最近更新 更多