3

打开后,NSZombieEnabled它将为EXC_BAD_ACCESS运行时发生的问题提供一些保护。

我正在努力确保没有/很少的内存泄漏,但我可能会过度释放,所以NSZombieEnabled打开将有助于防止这种情况,对吗?或者NSZombieEnabled打开后,所有的内存释放操作都会被转换成无操作吗?这将是一个大问题是这样的。

4

2 回答 2

2

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

此外,Apple 表示不要在以下位置启用它NSDebug.h

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

如果在 AppStore 上分发,我猜你不会通过审查。

于 2011-12-27T17:45:22.573 回答
1

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

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

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

于 2011-12-27T17:34:47.310 回答