【问题标题】:App Crashing on Simulator and Device but not when Profiling应用程序在模拟器和设备上崩溃,但在分析时没有
【发布时间】:2013-04-07 17:07:32
【问题描述】:

应用程序在模拟器和设备上因信号 SIGABRT(调试器输出为 child already added. It can't be added again)而崩溃。当我在模拟器或设备上运行时在 Xcode 中分析应用程序时运行良好。这是为什么呢?

更新:我发现这行代码导致了问题:

Mover *moverObject = [[[Mover alloc] init] autorelease];
NSMutableArray * array = [moverObject moveToward:startPoint :finalPoint]//<-- This is the problem

moveToward 是返回包含从startPointfinalPoint 的点的NSMutableArray 的方法。这在今天早些时候工作得很好,但是在我开始测试新的东西之后,我想我把它弄坏了。我只在GameLayer.m(我在其中添加代码)中对实际的Mover.h/.m 没有进行任何更改。我不确定我添加了什么导致问题。

更新 2:我使用断点进行了更多挖掘,发现

GameLayer *gameLayerObject = [[GameLayer alloc] init];<-- This causes the crash

mover.m 方法moveToward:: 所在的内部,这是它不会崩溃的最远距离。同样的错误是child already added. It can't be added again. 为什么会发生这种情况?

【问题讨论】:

    标签: xcode cocos2d-iphone xcode4.5 instruments


    【解决方案1】:

    这可能只是巧合。很难说,因为你没有发布任何代码。

    但错误消息很清楚:您尝试多次addChild 同一个节点,无论是同一个父节点还是不同的父节点。检查您的代码以了解可能发生这种情况的情况。

    【讨论】:

    • 是的,我一直在寻找可能发生这种情况的地方,是否有您知道的分析器可以帮助解决这个问题?但是为什么在我分析它时应用程序会工作? SIGAGRT 不会导致它在分析时崩溃吗?
    • Profiling 的意思是分析你的程序是如何运行的,你的意思是调试。如果您还没有,请在 Xcode 中启用全局异常断点。我不知道为什么它在分析过程中起作用,也许你只是没有触发导致错误的代码。
    • 更新了我的问题。在它在设备和模拟器上崩溃后,我尝试在分析时重现崩溃,遵循完全相同的步骤,但应用程序没有崩溃。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    相关资源
    最近更新 更多