【问题标题】:Why is main leaking in my iPhone app?为什么我的 iPhone 应用程序主要泄漏?
【发布时间】:2011-01-19 05:00:47
【问题描述】:

请参阅下面的屏幕截图,这是 Leaks Instrument 在我的应用程序中发现的唯一泄漏。似乎很奇怪 main 正在泄漏,因为它是开箱即用的。这很常见吗?

【问题讨论】:

  • 如果你在设备上实际测试它会泄漏吗?众所周知,模拟器存在一些漏洞,但实际上并不存在泄漏......
  • 什么对象被泄露了?
  • 这是几乎所有 Apple 示例定义 main() 的方式。我怀疑泄漏是不正确的。
  • @sw 最初的泄漏是在模拟器上,但是是的,它也在设备上泄漏。 @Peter Hosey 对象类型是 GeneralBlock-16 和 GeneralBlock-8。我现在的泄漏比我以前注意到的要多。 main 方法仍然是堆栈跟踪中列出的唯一一段代码。其他一切都是库代码。 QuartzCore 经常被提及。我不确定下一步我能做什么
  • 好的,所以泄漏的是 Core Animation 和/或 MapKit。您应该保存跟踪文档并将其附加到 Radar 中的错误报告中。 bugreport.apple.com

标签: iphone objective-c cocoa-touch xcode instruments


【解决方案1】:

这通常表明在应用代理加载之前某处发生了泄漏。检查任何添加的资源,如编译库。

将此代码源或您的应用程序委托源拖到 Instruments 中,它可能会向您显示调用堆栈,以便您跟踪它。

编辑01:

有关如何在 Instruments 中查看源代码的示例,请参阅 IPHONE: Analyzing leaks with instruments

【讨论】:

  • 试过这个没有用,不确定我做对了,因为 Instruments 似乎忽略了我将代码放入其中的事实。
  • Griffo:您的屏幕截图显示您已经在 Instruments 中查看源代码。您应该做的是使用底部的按钮查看泄漏的调用堆栈。很有可能,它实际上被分配到了更深的地方。
  • 您必须将 Instruments 切换到源视图。它是 IIRC 底部底部最右边的按钮,代码将出现在该按钮上。
  • @Peter Hosey 抱歉,我没有解释清楚。查看上面的调用堆栈图像
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 2011-01-05
  • 2011-04-26
  • 1970-01-01
相关资源
最近更新 更多