fobjc-arc 标志导致发送到已释放实例崩溃的消息
Posted
技术标签:
【中文标题】fobjc-arc 标志导致发送到已释放实例崩溃的消息【英文标题】:fobjc-arc flag causing message sent to deallocated instance crash 【发布时间】:2015-04-09 12:41:21 【问题描述】:我有一个 MRC(手动引用计数/非 ARC)项目,我通过在这些更改后添加 "-fobjc-arc" 编译器标志将一个类文件修改为 ARC 兼容我'每当我运行像 "message sent to deallocated instance crash"
这样的应用程序时,我都会遇到运行时错误如果我删除 -fobjc-arc 标志,那么我的应用程序将按预期工作,但使用此标志它会引发此运行时异常。 我做了很多谷歌搜索,但没有运气。 任何人都遇到过这个问题,任何帮助都提前表示感谢。
【问题讨论】:
message sent to deallocated instance crash
表示对象正在被解除分配,你永远不会在谷歌上找到解决方案,你必须深入研究你的代码并找出正在解除分配的对象以及何时/何地。
发布您的控制台日志和导致此崩溃的源代码部分
嗨@vichevstefan 我已经尝试使用异常断点和启用僵尸进行调试,但仍然没有运气:(,每次我收到“[XXXClassName tableView:heightForHeaderInSection:]: message sent to deallocated instance”异常,即使我注释掉我的 tableview 代表我得到这个异常我在 Xcode 6.1 中调试
目前还很难猜到你的原因,但要理解,请参考我的问题(我最近经历过,好像和你的问题有关)***.com/questions/29499833/…
嗨@vichevstefan,感谢您宝贵的时间和帮助,我会在调试中敲响一些时间并尝试解决它..
【参考方案1】:
这意味着您正在向已解除分配的实例发送消息,假设为 ARC。
要查看涉及哪些消息和对象,可以添加异常断点。使用 Instruments with Allocations 工具也可能有助于调试。
按照@Mephes 的建议使用 Zombies 也是一个非常好的主意。
【讨论】:
以上是关于fobjc-arc 标志导致发送到已释放实例崩溃的消息的主要内容,如果未能解决你的问题,请参考以下文章
[UINavigationController 保留]:发送到已释放实例的消息