4

我的第一个应用程序即将完成,我突然发现该应用程序导致内存泄漏。我发现了一些漏洞并修复了它们。现在没有泄漏,但令我惊讶的是,当启用 NSZombie 时,它​​显示了 4000 多个主要来自框架的泄漏。

我对 NSZombie 的确切使用感到困惑。它仅用于查找僵尸还是以任何方式用于查找泄漏?

这是一个屏幕截图,显示了与框架相关的所有泄漏:

泄漏的屏幕截图

4

2 回答 2

5

我相信命令行选项“NSDeallocateZombies”默认为 NO。所以僵尸永远不会被释放,因此如果僵尸 (NSZombiesEnabled) 处于打开状态,则会显示为泄漏。永远不要在僵尸开启的情况下测试泄漏。您也可以将 NSDeallocateZombies 设置为 YES,但我不确定它如何与 Instruments 交互。僵尸是一个特殊的对象,它响应所有异常消息。为了使它有用,它必须存在很长时间(这样当您尝试重用已释放的对象时可以捕获),但这使它看起来完全像泄漏。

于 2012-05-29T17:17:00.113 回答
1

如果 NSZombie 启用“释放”,则不要释放内存。NSZombie 用于测试是否使用已发布的对象

于 2012-05-29T14:45:44.900 回答