0

在测试我的应用程序时,一切在 iOS 模拟器上运行良好,但在物理 iOS 设备上运行同一个应用程序时,我遇到了内存泄漏。我是开发 iOS 应用程序的新手,我知道这有很多潜在的原因。我想知道为什么模拟器和物理设备之间会有所不同,是否有办法解决我的内存泄漏问题?

4

3 回答 3

3

我建议您阅读下面的教程。它将帮助您了解如何调试内存问题和其他问题。


  1. 我的应用程序崩溃了——现在怎么办?1/2
  2. 我的应用程序崩溃了——现在怎么办?2/2

提示:你的问题可以用僵尸对象解决;但我建议您先按照教程进行操作。

于 2012-06-10T04:11:32.753 回答
1

令我惊讶的是,您的设备而不是模拟器中有泄漏。你是怎么得出结论的?两者都可能泄漏,但问题只是在不同平台上的表现不同,或者只是在设备上比模拟器更快地遇到问题。

如果您有泄漏,我建议您做两件事:

  1. 通过静态分析器运行您的代码(从 Xcode 的“产品”菜单中选择“分析”)。较新的开发人员往往会忽略这个非常有用的工具。我知道只有在查看了分析器结果并真正理解(并解决)了我拥有的一个非常大的项目中的每一个问题之后,我才最终掌握了我的 Objective C 内存管理技术。无论如何,如果你在那里收到任何警告,你真的应该修复它们,因为它们通常表明内存管理问题。

  2. 通过探查器运行程序。请参阅查找泄漏文档。

于 2012-06-10T17:06:07.470 回答
0

是的,模拟器和设备之间存在差异(有时是令人讨厌的大差异)。这是因为每个的底层硬件是完全不同的。显然模拟器是在模拟iOS 硬件,但这并不是万无一失的。对于某些 API 和框架,事情可能只在硬件上工作,有时硬件上会出现在模拟器上没有出现的错误。只需将其视为 iOS 开发的“冒险”。

至于资源,我会看一下@Arab_Geek 的链接,以及 Apple 的iOS 开发工具——特别是Instruments,比如 Leaks。

于 2012-06-10T04:26:05.623 回答