我在这里读到,启用了ARC的NSZombies实际上可能会导致崩溃,我也读过它不能导致崩溃。人们已经说过,它可能会因为没有在对象上调用dealloc而导致崩溃。这是真的吗?仍然如此吗?我意识到它可能因内存耗尽而崩溃,但这是僵尸启用时唯一可能导致崩溃的原因吗?
答案 0 :(得分:2)
目前尚不清楚你在问什么。
通过NSZombies,您的意思是在项目中将NSZombies标志设置为true吗?是的,这会导致程序的内存永远增长,最终会耗尽内存并崩溃。 (当启用僵尸时,运行时不会在dealloc上释放对象,而是将它们标记为僵尸并使其内存使用。)
如果你的意思是可以在你的程序中拥有僵尸(被解除分配的对象,但你的代码试图向他们发送消息)那么是的,那可能,并且经常会导致崩溃。僵尸在ARC下不太常见,但仍有可能。
答案 1 :(得分:0)
设置NSZombieEnabled
本身不会导致崩溃。
当然,您应用中的其他隐藏错误可能会显示为内存使用量变化的副作用。
人们说它可能会因为没有在对象上调用dealloc而导致崩溃。
事实并非如此。启用僵尸检测不会阻止调用dealloc
。