【问题标题】:Memory Leaks showing up on iPhone only内存泄漏仅出现在 iPhone 上
【发布时间】:2011-12-11 21:15:05
【问题描述】:

我有一个带有 4 个标签的标签栏应用程序,代码中没有什么特别之处。

所有模拟器测试都很好,应用没有崩溃,一切正常,Xcode 中没有显示警告或错误(我使用的是 Xcode 4.2,应用使用情节提要)。

运行“分析”时,代码中没有泄漏、错误或潜在泄漏。

运行“泄漏”时,没有列出泄漏,我可以加载、重新加载、在选项卡之间交换等,一切都很好。

但是,当我在 iPhone 上运行此程序时,会出现很多漏洞!

其中一些似乎在已发布且看起来不错的代码中,并且在 Xcode 中都可以正常验证。

为什么在手机上运行与模拟器不同,如何查找和调试在模拟器上运行泄漏时未显示的泄漏?

【问题讨论】:

  • 您提供的信息越多越好。您的项目使用 ARC 吗?请粘贴检测到的泄漏的信息或屏幕截图。
  • 不知道如何附上截图,所以在这里上传:link

标签: iphone ios xcode memory-leaks


【解决方案1】:

首先,通过将检查范围(使用左右范围按钮)限制在发生泄漏的区域,您可以检查更小的区域。然后,通过从左侧的调用树中选择一些有用的检查,例如仅显示 Obj-C、隐藏缺失符号等。然后您将从仪器中获得更多有用的信息。之后,单击与泄漏相关的行之一,打开扩展视图并开始检查您的调用堆栈。此外,据我所知,双击泄漏行可以将您带到分配泄漏对象的源代码。这里要小心,因为它没有显示泄漏发生的位置,它显示了泄漏对象的分配位置。所以,你应该关注这些对象会发生什么。

关于模拟器和设备的区别,可以查看this SO question。

希望这些帮助!

【讨论】:

    猜你喜欢
    • 2010-11-23
    • 2011-12-10
    • 2011-05-24
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多