我有一个游戏实体类如下:
@interface CPlanet : NSObject {
b2Body *planetBody;
}
-(void)init;
-(void)syncWithPhysics;
@end
在 init() 方法中,我创建了一个 b2Body 实例并将 CPlanet 实例分配给它的用户数据,如下所示:
//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 实例有关?