我正在开发一个基于ARC的项目。我从未参与过基于Non ARC的项目。最近我
在我启用ARC的项目中遇到了一个僵尸。据我所知,那里不会有记忆
在ARC中泄漏,因为对象将自动解除分配。但我遇到了一个僵尸
说“消息传递给解除分配的实例”。我的困惑是内存泄漏等价物
一个僵尸。如果是这种情况,那么内存泄漏也会发生在ARC中吗?有什么帮助吗?
答案 0 :(得分:40)
答案 1 :(得分:1)
有几种可能性,如果不看代码,很难知道发生了什么。 “传递给解除分配的实例的消息”错误意味着您有一个指向对象所在位置的指针,但此后已被解除分配。 ARC可以并且仍然会发生这种情况。之所以会发生这种情况,是因为你有一些非ARC代码(或者可能是Core Foundation的东西)与ARC代码进行交互,并且在交接过程中出现问题。它也可能发生,因为虽然ARC几乎每次都选择正确的时间点来释放对象,但它并不完美(通常有办法解决这些实例)。