【发布时间】:2012-06-13 13:01:42
【问题描述】:
在测试我的应用时,在 iOS 模拟器上一切正常,但在物理 iOS 设备上运行同一个应用时,我遇到了内存泄漏。我是开发 iOS 应用程序的新手,我知道这有很多潜在的原因。我想知道为什么模拟器和物理设备之间会有所不同,是否有办法解决我的内存泄漏问题?
【问题讨论】:
标签: iphone ios ipad memory-leaks
在测试我的应用时,在 iOS 模拟器上一切正常,但在物理 iOS 设备上运行同一个应用时,我遇到了内存泄漏。我是开发 iOS 应用程序的新手,我知道这有很多潜在的原因。我想知道为什么模拟器和物理设备之间会有所不同,是否有办法解决我的内存泄漏问题?
【问题讨论】:
标签: iphone ios ipad memory-leaks
我建议您阅读下面的教程。它将帮助您了解如何调试内存问题和其他问题。
提示:你的问题可以用僵尸对象解决;但我建议您先按照教程进行操作。
【讨论】:
我很惊讶您的设备而不是模拟器中存在泄漏。你是怎么得出结论的?两者都可能泄漏,但问题只是在不同平台上的表现不同,或者只是在设备上比模拟器更快地遇到问题。
如果你有泄漏,我建议两件事:
通过静态分析器运行您的代码(从 Xcode 的“产品”菜单中选择“分析”)。较新的开发人员往往会忽略这个非常有用的工具。我知道只有在查看了分析器结果并真正理解(并解决)了我拥有的一个非常大的项目中的每一个问题之后,我才最终掌握了我的 Objective C 内存管理技术。无论如何,如果您在那里收到任何警告,您真的应该修复它们,因为它们通常表明内存管理问题。
通过探查器运行程序。请参阅Finding Leaks 文档。
【讨论】:
是的,模拟器和设备之间存在差异(有时是令人讨厌的大差异)。这是因为它们的底层硬件完全不同。很明显,模拟器模拟 iOS 硬件,但这并不意味着它是万无一失的。对于某些 API 和框架,事情可能只在硬件上工作,有时硬件上会出现在模拟器上没有出现的错误。只需将其视为 iOS 开发的“冒险”。
至于资源,我会查看 @Arab_Geek 的链接,以及 Apple 的 Tools for iOS Development - 特别是 Instruments,例如 Leaks。
【讨论】: