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