我在这里读到,启用了ARC的NSZombies实际上会导致崩溃,我也读到了它不会是崩溃的原因。人们曾说过,它可能会导致bug导致崩溃,其中dealloc不是在对象上调用的。这是真的吗,现在还是这样吗?我意识到它可能会因为内存不足而崩溃,但这是启用僵尸导致崩溃的唯一情况吗?
发布于 2014-03-20 23:43:27
现在还不清楚你在问什么。
说到NSZombies,您的意思是在项目中将NSZombies标志设置为true吗?是的,这会导致你的程序内存永远增长,你最终会耗尽内存并崩溃。(启用僵尸后,运行时不会在取消分配时释放对象,而是将其标记为僵尸并保留其内存。)
如果你的意思是在你的程序中可能有僵尸(被释放的对象,但你的代码试图向它们发送消息),那么是的,这可能,而且通常确实会导致崩溃。僵尸在ARC模式下不太常见,但仍然有可能。
发布于 2014-03-20 23:58:41
设置NSZombieEnabled本身不会导致崩溃。
当然,应用程序中的一些隐藏错误可能会表现为内存使用变化的副作用。
人员曾说过,它可能会因对象上未调用dealloc的错误而导致崩溃。
事实并非如此。启用僵尸检测不会阻止调用dealloc。
https://stackoverflow.com/questions/22537942
复制相似问题