Sprite kit SKShapeNode dealloc EXC\u坏访问

Sprite kit SKShapeNode dealloc EXC\u坏访问,sprite-kit,exc-bad-access,dealloc,skshapenode,Sprite Kit,Exc Bad Access,Dealloc,Skshapenode,我有一些奇怪的问题,当我试图摧毁一个怪物时,精灵套件会呕吐。下图是从堆栈跟踪中提取的 以前有人见过这个吗?在使用SKSpriteNode时,我似乎没有遇到这个问题(即,当BAJoint是SKSpriteNode而不是SKShapeNode时) 此外,如果查看堆栈跟踪,您将看到对SKEffectNode的dealloc的调用。我在应用程序中的任何位置都没有以任何形式使用SKEffectNodes,因此我对调用SKEffectNode dealloc的原因感到困惑。也有同样的问题,但最终我解决了。

我有一些奇怪的问题,当我试图摧毁一个怪物时,精灵套件会呕吐。下图是从堆栈跟踪中提取的

以前有人见过这个吗?在使用SKSpriteNode时,我似乎没有遇到这个问题(即,当BAJoint是SKSpriteNode而不是SKShapeNode时)


此外,如果查看堆栈跟踪,您将看到对SKEffectNode的dealloc的调用。我在应用程序中的任何位置都没有以任何形式使用SKEffectNodes,因此我对调用SKEffectNode dealloc的原因感到困惑。

也有同样的问题,但最终我解决了。我将链接留在了这里

解决方案是在释放形状之前调用此方法(在我的例子中,在我呈现新场景之前)


我想知道这是否与我发现的问题有关。结果是我在场景中的节点上运行SKActions时破坏了场景。我已经搜索了几个小时,研究了如何调试EXC_BAD_访问,如何查找僵尸,甚至如何获取堆栈跟踪或使用auto release和malloc compares..我正在做的只是t他最拿手的就是移除所有节点/停止动作。我很惊讶当前场景并没有导致这种情况发生。我在场景中使用SKEmitterNode时也遇到了同样的问题。
- (void)cleanUpChildrenAndRemove:(SKNode*)node {
    for (SKNode *child in node.children) {
        [self cleanUpChildrenAndRemove:child];
    }
    [node removeFromParent];
}