Частый посетитель, но первое сообщение здесь, на StackOverflow, я надеюсь, что вы, ребята, могли бы помочь мне с этим. Я довольно новичок в Obj-C и XCode, и я столкнулся с этой действительно ... странной ... проблемой. Поиск в Google ничего не дал. По сути, я получаю сигнал EXC_BAD_ACCESS в строке, которая не выполняет разыменование или что-либо подобное, что я вижу. Хотите знать, если вы, ребята, есть идеи, где искать это. Я нашел обходной путь, но понятия не имею , почему это работает ... Строка, на которой прервана ломаная версия, это строка:
LevelEntity *le = entity;
где я получаю плохой сигнал доступа.
Вот так:
ЭТА ВЕРСИЯ РАБОТАЕТ
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];
}
}
ЭТА ВЕРСИЯ НЕ РАБОТАЕТ
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];
}
}
Здесь разница между этими двумя примерами only заключается в том, как я перечисляю свой массив. В первой версии (которая работает) я использую для (... в ...), где, как во второй я использую для (...; ...; ...). Насколько я вижу, они должны быть одинаковыми.
Это серьезно изводит меня. У кого-нибудь есть подобный опыт или идея, что здесь происходит? Было бы действительно здорово :) 1028 *
Ура,
Alex