发送到已释放实例的消息

Posted

技术标签:

【中文标题】发送到已释放实例的消息【英文标题】:message sent to deallocated instance 【发布时间】:2011-02-07 09:45:51 【问题描述】:

我有一个数据的表格视图。在快速滚动我的表格 2 或 3 次时,它会崩溃。我的 gdb 是这样说的 "message sent to deallocated instance...."

有人知道怎么解决吗?

【问题讨论】:

发布代码以供有人帮助您。 只是找出你错误释放对象的位置:) 【参考方案1】:

是的,您的引用计数有错误。

要查找对象,请启用 NSZombies。启用 NSZombies 不会释放您的对象——但是当您尝试向(在正常操作下)已被释放的实例发送消息时会产生运行时错误。从那里,您可以了解有关该对象的更多信息(例如它的类型)。

Instruments 还有一个 NSZombie 模式。指出对象/僵尸的生命周期非常有用。

有关详细信息,请参阅: http://www.cocoadev.com/index.pl?NSZombieEnabled

该链接还详细说明了如何配置可执行文件以在启用僵尸的情况下运行。这可以在“在 Xcode 中使用”部分找到。

【讨论】:

感谢您的回复。但是如何启用 NSZombies(Project->Edit active Executable..)....? @user 599561 我已经更新了答案,并提供了一个链接,它将引导您完成整个过程。

以上是关于发送到已释放实例的消息的主要内容,如果未能解决你的问题,请参考以下文章

发送到已释放实例问题的消息

[UINavigationController 保留]:发送到已释放实例的消息

发送到已释放实例的消息

tableView:didSelectRowAtIndexPath - 发送到已释放实例的消息

发送到已释放实例 Core Data 的消息

[NSDecimalNumber 保留]:消息发送到已释放实例 0x174222220,但为啥呢?