僵尸对象是用于捕捉内存错误的调试功能。
通常情况下,当引用计数降为 0 时对象会立即被释放,但这使得调试变得困难。如果开启
了僵尸对象,那么对象就不会立即释放内存,而是被标记为僵尸。任何试图对其进行访
问的行为都会被日志记录,因而你可以在对象的生命周期中跟踪对象在代码中被使用的
位置。
NSZombieEnabled 是一个环境变量,可以控制 Core Foundation 的运行时是否将使用僵尸对
象。不应长期保留 NSZombieEnabled,因为默认情况下不会有对象被真正析构,这会导致应
用使用大量的内存。特别说明一点,在发布的构建包中一定要禁用 NSZombieEnabled。
要想设置 NSZombieEnabled 环境变量,需要进入 Product → Scheme → Edit Scheme。选择
左侧的 Run,然后在右侧选取 Diagnostics 标签页。选中 Enable Zombie Objects 选项,如图新版xcode会有所出入
11-17
1212

08-08
2269
