我的第一个应用程序即将完成,我突然发现该应用程序导致内存泄漏。我发现了一些泄漏并修复了它们。现在没有泄漏,但令我惊讶的是,当NSZombie启用时,它显示超过4000个泄漏,主要来自框架。
我对NSZombie的确切用法感到困惑。它只用于寻找僵尸,还是以任何方式找到泄漏?
这是一个屏幕截图,显示了与框架相关的所有泄漏:
答案 0 :(得分:5)
我相信命令行选项' NSDeallocateZombies'默认为NO。因此僵尸永远不会被释放,因此如果僵尸(NSZombiesEnabled)打开则会出现泄漏。切勿用僵尸测试泄漏。您也可以将NSDeallocateZombies转为YES,但我不确定它与Instruments的交互方式。僵尸是一个特殊对象,它响应所有带有异常的消息。为了使它变得有用,它必须存活很长时间(因此当你尝试重用一个解除分配的对象时你可以捕获它),但这使它看起来就像一个泄漏。
答案 1 :(得分:1)
如果NSZombie启用“释放”则不释放内存。 如果您使用已发布的对象,NSZombie将用于测试