Visiteur fréquent mais premier message ici sur StackOverflow, j'espère que vous pourrez m'aider avec ça. Je suis assez nouveau à Obj-C et XCode, et je suis confronté à ce problème vraiment ... étrange .... Google n'a rien trouvé. Fondamentalement, j'obtiens un signal EXC_BAD_ACCESS sur une ligne qui ne fait pas de déréférencement ou quelque chose comme ça que je peux voir. Vous vous demandez si vous avez une idée de ce que vous cherchez. J'ai trouvé un travail autour, mais aucune idée pourquoi cela fonctionne ... La ligne la version cassée vomit sur est la ligne:EXC_BAD_ACCESS lorsque vous lancez simplement un pointeur dans Obj-C
LevelEntity *le = entity;
où je reçois mon mauvais signal d'accès.
va ici:
CETTE VERSION TRAVAUX
NSArray *contacts = [self.body getContacts];
for (PhysicsContact *contact in contacts)
{
PhysicsBody *otherBody;
if (contact.bodyA == self.body)
{
otherBody = contact.bodyB;
}
if (contact.bodyB == self.body)
{
otherBody = contact.bodyA;
}
id entity = [otherBody userData];
if (entity != nil)
{
LevelEntity *le = entity;
CGPoint point = [contact contactPointOnBody:otherBody];
}
}
CETTE VERSION DOESNT TRAVAIL
NSArray *contacts = [self.body getContacts];
for (NSUInteger i = 0; i < [contacts count]; i++)
{
PhysicsContact *contact = [contacts objectAtIndex:i];
PhysicsBody *otherBody;
if (contact.bodyA == self.body)
{
otherBody = contact.bodyB;
}
if (contact.bodyB == self.body)
{
otherBody = contact.bodyA;
}
id entity = [otherBody userData];
if (entity != nil)
{
LevelEntity *le = entity;
CGPoint point = [contact contactPointOnBody:otherBody];
}
}
Ici, le seulement La différence entre les deux exemples est la façon dont j'énumère à travers mon tableau. Dans la première version (qui fonctionne) j'utilise pour (... dans ...), où comme dans la seconde j'utilise pour (...; ...; ...). Autant que je puisse voir, ceux-ci devraient être les mêmes.
Cela me fait vraiment peur. Quelqu'un at-il une expérience similaire ou une idée de ce qui se passe ici? Ce serait vraiment génial :)
Cheers, Alex
Juste curieux - dans cette ligne: CGPoint point = [contact contactPointOnBody: otherBody]; faites-vous quelque chose avec le point que vous avez supprimé de l'exemple de code, ou est-ce que cet appel définit réellement certains états en contact ou autre? –
Je fais quelque chose avec ça maintenant - je n'étais pas au moment de l'écriture de l'échantillon, comme j'ai découvert le crash entre l'écriture de la ligne citée, et réellement faire quelque chose avec la valeur :) – AlexC