我已经在这个网站和整个google上寻找了大约一个星期,试图解决我的应用程序中的错误。它看起来像是内存管理的问题,而僵尸的断点/仪器可能返回任何东西。我只能弄清楚问题出在此代码块。在某些情况下运行应用程序时,它将在我的main.m上返回EXC_BAD_ACCESS。我认为这是问题所在,但在此先感谢您查看!
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
if (!gameOver && gameStarted) {
[lines runAction:[SKAction removeFromParent]];
dotDrawn = NO;
UITouch* touch = [touches anyObject];
CGPoint positionInScene = [touch locationInNode:self];
pos2x = positionInScene.x;
pos2y = positionInScene.y;
lines = [SKShapeNode node];
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, pos1x, pos1y);
CGPathAddLineToPoint(path, NULL, pos2x, pos2y);
lines.path = path;
lines.strokeColor = [UIColor grayColor];
[lines setLineWidth:3];
[self addChild:lines];
}
}
我遇到了同样的问题,并且有相同的症状:该代码在iOS7.1中有效,但是在iOS8中开始因EXC_BAD_ACCESS崩溃;尝试使用僵尸跟踪不良访问的来源没有帮助。
这是解决我问题的方法:消除对的所有使用[SKAction removeFromParent]
。
在您的示例中,这仅意味着替换[lines runAction:[SKAction removeFromParent]]
为[lines removeFromParent]
。
有点麻烦的是替换这样的东西:
[myNode runAction:[SKAction sequence:@[ [SKAction fadeOutWithDuration:1.0],
[SKAction removeFromParent] ]]];
有了这个:
[myNode runAction:[SKAction fadeOutWithDuration:1.0] completion:^{
[myNode removeFromParent];
}];
编辑:使用正确的搜索词,我找到了描述相同问题的另一个问题的链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句