启用NSZombieEnabled
后,它会对运行时发生的EXC_BAD_ACCESS
问题提供一些防范。
我正在进行双重努力,以确保没有/很少的内存泄漏,但我可能过度释放,因此打开NSZombieEnabled
将有助于防止这种情况,我是对的吗?或者在NSZombieEnabled
打开的情况下,是否所有内存释放操作都会转换为no-op?事情就是这样一个大问题。
答案 0 :(得分:2)
不,您不应随NSZombiesEnable
一起发货。僵尸通过将解除分配的对象的isa指针强制转换为“僵尸”类来工作。除非启用NSDeallocateZombies
,否则不会释放此对象的存储空间。因此,如果您启用了僵尸,则可能会泄漏内存。
此外,Apple表示不会在NSDebug.h
中启用它:
不要依赖代码中任何这些符号的存在 在此软件的未来版本中。当然,不要依赖于 生产代码中此标题中的符号。
如果在AppStore上发布,我的猜测是你不会通过评论。
答案 1 :(得分:1)
你应该关闭它,因为启用NSZombieEnabled意味着你分配的对象没有被释放,因此你的应用程序将会泄漏。
http://www.cocoadev.com/index.pl?NSZombieEnabled
''NSZombieEnabled不应永久保留,因为默认情况下不会真正释放任何对象,使您的应用程序使用大量内存''