仪器在模拟器上发现泄漏,但在设备上没有

Posted

技术标签:

【中文标题】仪器在模拟器上发现泄漏,但在设备上没有【英文标题】:Instrument finds leaks on Simulator, but not on the Device 【发布时间】:2009-11-24 16:22:49 【问题描述】:

我在提交到 AppStore 之前正在调整我的 iPhone 应用程序,当我注意到如果我在模拟器中运行 Instrument|debug 会发现很多内存泄漏...但如果我在设备上运行它 Instrument 找不到任何一个.... 老实说,有两个漏洞,我已经修复了它们。现在设备上没有泄漏,但模拟器上仍然有太多泄漏。

谁是对的?

【问题讨论】:

在模拟器上发现的泄漏,它们有效吗?你已经改正了吗? 它们无效。例如,我通过代码创建了一些带有自定义标签的自定义按钮。 Instrument 在 UIButton 和 UILabel 上都发现了泄漏,但没有泄漏:我只是 alloc\init,添加到 Subview,然后释放它们!我还尝试创建泄漏,仪器发现它在设备上正确运行(这意味着仪器正常工作)。天哪! 【参考方案1】:

信任设备。

模拟器将使用稍微不同的内存模型 - 始终在设备上进行测试 :)

山姆

【讨论】:

谢谢。你说我想要别人对我说的话 :D 啊,我会相信设备,模拟器已经疯了!停止调试,让我们提交:)【参考方案2】:

您是否为您的模拟器构建设置了 NSZombieEnabled?这将导致报告大量泄漏。

【讨论】:

以上是关于仪器在模拟器上发现泄漏,但在设备上没有的主要内容,如果未能解决你的问题,请参考以下文章

仪器(泄漏)不工作

一分钟后webview中的内存泄漏仅通过仪器

故障运行泄漏仪器

从 Instruments 运行时程序不工作

AVPlayer 导致模拟器崩溃但在设备上运行良好

xcode仪器问题