是否应该为已发布的应用关闭NSZombieEnabled?

时间:2011-12-27 17:27:07

标签: ios memory-management release nszombieenabled

启用NSZombieEnabled后,它会对运行时发生的EXC_BAD_ACCESS问题提供一些防范。

我正在进行双重努力,以确保没有/很少的内存泄漏,但我可能过度释放,因此打开NSZombieEnabled将有助于防止这种情况,我是对的吗?或者在NSZombieEnabled打开的情况下,是否所有内存释放操作都会转换为no-op?事情就是这样一个大问题。

2 个答案:

答案 0 :(得分:2)

不,您不应随NSZombiesEnable一起发货。僵尸通过将解除分配的对象的isa指针强制转换为“僵尸”类来工作。除非启用NSDeallocateZombies,否则不会释放此对象的存储空间。因此,如果您启用了僵尸,则可能会泄漏内存。

此外,Apple表示不会在NSDebug.h中启用它:

  

不要依赖代码中任何这些符号的存在   在此软件的未来版本中。当然,不要依赖于   生产代码中此标题中的符号。

如果在AppStore上发布,我的猜测是你不会通过评论。

答案 1 :(得分:1)

你应该关闭它,因为启用NSZombieEnabled意味着你分配的对象没有被释放,因此你的应用程序将会泄漏。

http://www.cocoadev.com/index.pl?NSZombieEnabled

''NSZombieEnabled不应永久保留,因为默认情况下不会真正释放任何对象,使您的应用程序使用大量内存''