EXC_BAD_ACCESS在破坏身体时

时间:2013-05-30 10:54:26

标签: cocos2d-iphone box2d physics box2d-iphone

我在Sprite类中创建了一个方法,用于更新CCPhysicsSprite主体的位置,直到它到达某个位置。代码如下:

-(void)updatePhyscisSprite    {

if (phySpr.b2Body->GetPosition().y < 200.0/PTM_RATIO) {

    b2Vec2 force = b2Vec2(0.0, 12.0*phySpr.b2Body->GetMass());
    phySpr.b2Body->ApplyForce(force, phySpr.b2Body->GetWorldCenter());
    }
if (phySpr.b2Body->GetPosition().y > 200.0/PTM_RATIO) {
    bWorld->DestroyBody(phySpr.b2Body);
    phySpr.b2Body = NULL;
    [bLayer removeChild:phySpr];

}
}

我一直在行中收到EXC_BAD_ACCESS错误:

if (phySpr.b2Body != NULL) { // EXC_BAD_ACCESS ERROR

我觉得当body为NULL时检查null是否会产生问题,因为每1/60秒调用一次方法。我不确定如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

尝试这样做:

在PhyscisSprite.mm

- (void)dealloc
{
    bWorld->DestroyBody(b2Body);
    b2Body = NULL;

    [super dealloc];
}

并在您的函数中输入

[bLayer removeChild:phySpr cleanup:YES];