0

我在这里读到启用 ARC 的 NSZombies 实际上会导致崩溃,我也读过它不会导致崩溃。人们说它可能会因未在对象上调用 dealloc 的错误而导致崩溃。这是真的吗?现在仍然如此吗?我意识到它可能会因内存不足而崩溃,但这是唯一一次由于启用了僵尸而导致崩溃吗?

我正在查看的帖子是:NSZombie crashing app when enabled on the iPhone

4

2 回答 2

2

目前尚不清楚您在问什么。

NSZombies 是指在您的项目中将 NSZombies 标志设置为 true 吗?是的,这会导致你的程序内存永远增长,你最终会耗尽内存并崩溃。(启用僵尸时,运行时不会在 dealloc 上释放对象,而是将它们标记为僵尸并保留它们的内存在使用中。)

如果你的意思是在你的程序中可以有僵尸(对象被释放但你的代码试图向它们发送消息),那么是的,这可能并且经常会导致崩溃。僵尸在 ARC 下不太常见,但仍有可能。

于 2014-03-20T15:43:27.410 回答
0

设置NSZombieEnabled本身不会导致崩溃。

当然,您的应用程序中的一些其他隐藏错误可能会显示为内存使用变化的副作用。

人们说它可能会因未在对象上调用 dealloc 的错误而导致崩溃。

事实并非如此。启用僵尸检测并不会阻止dealloc被调用。

于 2014-03-20T15:58:41.440 回答