【发布时间】:2015-08-14 17:55:35
【问题描述】:
我是 objective-c 和 xcode 的新手,我目前正在编写的应用程序收到了臭名昭著的 EXC_BAD_ACCESS 错误。
几乎每个人都建议开始使用 NSZombies 来解决问题。我认为我的 NSZombies 正在运行,但 xcode 并没有提醒我在我的应用崩溃时收到了关于 zombie 的消息。
在继续调试之前,我想运行一些代码,这些代码肯定会导致将消息发送到 zombie(解除分配的对象)。
什么是简单的代码 sn-p,其中消息被发送到已释放的对象,导致 NSZombies 应该提醒我的情况?
【问题讨论】:
-
@zaph 不,这是内存泄漏。僵尸是指向已释放对象的指针。
-
@zaph 如果您启用了僵尸,那么在您解除分配对象时会留下僵尸。僵尸不会释放该内存,而是持有该内存,并且可以在向它发送消息时提醒您 - 应该是一个已释放的对象。
-
@zaph 僵尸(作为调试工具)的全部意义在于找到仍然有指向已释放对象的指针的情况,然后您尝试访问该对象。跨度>
-
@zaph,这个问题是专门询问 NSZombie,你在说什么?
-
好吧,我给出了一个常识,即如果不启用僵尸对象,僵尸就无法存在。这与僵尸任务的概念完全相反,我认为僵尸任务的命名早于僵尸对象。
标签: objective-c xcode nszombie nszombieenabled nszombies