Moshe Moshe - 4 months ago 9
iOS Question

What is NSZombie?

I've seen suggestions saying to set

NSZombieEnabled
to
true
while debugging. What is NSZombie? Is it a framework? A setting?

Answer

It's a memory debugging aid. Specifically, when you set NSZombieEnabled then whenever an object reaches retain count 0, rather than begin deallocated it morphs itself into an NSZombie instance. Whenever such a zombie receives a message, it logs a warning rather than crashing or behaving in an unpredictable way. As such, you can debug subtle over-release/autorelease problems without advanced tools or painstaking needle in haystack searches.

You can read more over at Cocoa Dev. The name is a fairly obvious play on the fact that objects are normally considered "dead" when they reach retain count 0. With this setting, they continue to exist in a strange half-life - neither living, nor quite dead. Much like real zombies, except they eat rather fewer brains.