With NSZombieEnabled
turned on it will provide some guard against the EXC_BAD_ACCESS
issues happening at runtime.
I am doing dual-diligence to make sure no/little memory leaks, but I might over releasing so having NSZombieEnabled
turned on would help prevent that, am I right? Or with NSZombieEnabled
turned on, would all memory releasing operations be translated into no-op? It'll be a big problem is that's the case.
No, you should not ship with NSZombiesEnable
. Zombies work by casting the isa pointer of deallocated objects to a "zombie" class. The storage for this object is not freed unless NSDeallocateZombies
is enabled. Therefore, if you leave zombies enabled, you may be leaking memory.
In addition, Apple says not to leave it enabled in NSDebug.h
:
Do not depend on the existance of any of these symbols in your code
in future releases of this software. Certainly, do not depend on the
symbols in this header in production code.
If distributing on the AppStore, my guess is that you would not pass the review.
You should turn it off because having the NSZombieEnabled on means the objects you allocated are not deallocated, hence your app will be leaking.
http://www.cocoadev.com/index.pl?NSZombieEnabled
''NSZombieEnabled should not be left in place permanently, as by default no objects will ever be truly deallocated, making your application use tremendous amounts of memory''