发布应用时,NSZombieEnabled应该关闭吗?

3
使用NSZombieEnabled可以在运行时提供一定的保护,防止发生EXC_BAD_ACCESS问题。
我正在进行双重审查以确保没有/很少内存泄漏,但我可能会过度释放,打开NSZombieEnabled可以帮助防止这种情况,对吗?或者开启NSZombieEnabled后,所有的内存释放操作都将被转换为无操作吗?如果是这种情况,那将会是一个大问题。
2个回答

2
不,你不应该使用NSZombiesEnable。僵尸对象通过将已释放对象的isa指针转换为“僵尸”类来工作。除非启用NSDeallocateZombies,否则不会释放此对象的存储空间。因此,如果您保留了启用的僵尸对象,可能会泄漏内存。
此外,苹果公司表示不要在NSDebug.h中保留它的启用状态:

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

如果在AppStore上发布应用程序,我猜您可能无法通过审核。

1

你应该关闭它,因为开启NSZombieEnabled意味着你分配的对象不会被释放,因此你的应用程序将会出现内存泄漏。

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

''NSZombieEnabled不应该永久保留,因为默认情况下没有对象会真正被释放,这会导致你的应用程序使用大量的内存''


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接