僵尸对象(Zombie Object)是指已经被释放(dealloc)但仍然有指针指向它的对象。当代码尝试向一个已释放的对象发送消息时,由于该内存可能已被重新分配给其他对象或已变为无效内存,会导致不可预期的崩溃行为。这类崩溃的特点是难以复现和定位,因为崩溃发生时的调用栈可能与实际导致问题的代码位置相距甚远。监控僵尸对象的常见方案是Hook NSObject的dealloc方法,在对象释放时不立即回收内存,而是将其标记为僵尸状态。当有代码尝试访问僵尸对象时,就能准确记录访问时的调用栈和被访问对象的类名等信息。Xcode自带的Zombie Objects调试工具也基于类似原理,但只能在开发阶段使用,线上监控需要自行实现轻量级方案。




