【问题标题】:An Objective-C message was sent to a deallocated?一个 Objective-C 消息被发送到一个解除分配的?
【发布时间】:2014-04-23 01:14:59
【问题描述】:

当应用程序崩溃时,我会在下面看到这条消息,我还是新手。我如何使用它来找到根本原因?

An Objective-C message was sent to a deallocated 'MainScene' object (zombie) at address: 0x1f3f5d70.

【问题讨论】:

  • 不幸的是,这纯粹是症状。你已经打开了僵尸来检测消息是否被发送到一个悬空指针。这是。但是指针为什么悬空,什么时候开始悬空,却是完全未知的;它发生在早些时候。
  • 有更好的测试方法吗?
  • 测试结束。它成功了。你完成了。 - 问题是为什么你释放了一个 MainScene 对象,你仍然维护一个指针。如果您使用 ARC,这并不容易。如果您使用 ARC,这很容易(您可能对您不拥有的东西说 release)。您可以使用 Instruments 来跟踪 MainScene 对象的生命周期保留/释放,并且您可以仔细检查您的代码,但您没有提供任何信息,所以我不能说更多。

标签: xcode memory-management instruments


【解决方案1】:

我如何使用它来找到根本原因?

查看发生崩溃的行。您要向哪个对象发送消息?你从哪里得到的指针?

调试是一项侦探工作,而您正在查看犯罪现场。您可以查看证据——崩溃发生的位置、调用堆栈等。您还可以运行测试来检查假设:在代码中的较早点设置断点以查看指针是否在那里有效。寻找对象被释放的地方。

坚持下去。每个错误都有一个原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2014-05-11
    • 2013-06-04
    • 2012-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多