У меня есть класс игрового объекта:
@interface CPlanet : NSObject {
b2Body *planetBody;
}
-(void)init;
-(void)syncWithPhysics;
@end
в методе init () я создаю экземпляр b2Body и назначаю экземпляр CPlanet его userdata следующим образом:
//creating the physics
b2BodyDef bodyDef;
bodyDef.type=b2_dynamicBody;
bodyDef.userData=self;
planetBody=world->CreateBody(&bodyDef);
В моем экземпляре CCLayer я пытаюсь получить этот объект следующим образом:
for(b2Body* b =world->GetBodyList();b;b=b->GetNext())
{
void *udata=b->GetUserData();
if(udata!=NULL)
{
CCLOG(@"Some udata %d",udata);
CPlanet *planet=(CPlanet*)udata;
// [planet syncWithPhysics]; <---- here programm crashes ???
}
}
Но строка "[planet syncWithPhysics]" завершает работу приложения с ошибкой
Программа получила сигнал: «EXC_BAD_ACCESS».
Я проверил адрес памяти полученного экземпляра CPlanet (udate) того же объекта.
Какие-нибудь советы?
Должен ли это делать Box2D как C ++, а я использую экземпляр Objective-C?