J'ai créé une méthode dans la classe Sprite qui met à jour la position d'un corps CCPhysicsSprite jusqu'à ce qu'il atteigne une certaine position. Code ci-dessous:EXC_BAD_ACCESS lors de la destruction du corps
-(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];
}
}
Je continue à obtenir une erreur de EXC_BAD_ACCESS à la ligne:
if (phySpr.b2Body != NULL) { // EXC_BAD_ACCESS ERROR
J'ai le sentiment que le contrôle de nullité lorsque le corps est NULL crée le problème car la méthode est appelée à chaque 1/60 de seconde Je ne suis pas vraiment sûr de savoir comment régler cela.
le phySpr est à l'origine du crash, essayez niling le phySpr après removeChild – LearnCocos2D
Donnez un contexte pour 'if (phySpr.b2Body! = NULL)'. – Kreiri
@ LearnCocos2D: Cela fonctionne. Merci beaucoup. Je suis là depuis des heures. – user2380370