Objective c cocos2d的目标C指针问题

Objective c cocos2d的目标C指针问题,objective-c,pointers,cocos2d-iphone,Objective C,Pointers,Cocos2d Iphone,我试图做的是为我拥有的任何对象动态初始化一个b2Body。代码如下: b2Body * mallet1; [self setMalletProperties: &blockBodyDef : mallet1]; -(void) setMalletProperties:(b2BodyDef *)body :(b2Body *) mallet { body->type = b2_dynamicBody; mallet = world->CreateBody(body); b

我试图做的是为我拥有的任何对象动态初始化一个b2Body。代码如下:

b2Body * mallet1;

[self setMalletProperties: &blockBodyDef : mallet1];

-(void) setMalletProperties:(b2BodyDef *)body :(b2Body *) mallet {
body->type = b2_dynamicBody;

mallet = world->CreateBody(body);
b2Vec2 newLocation = b2Vec2([self getScreenSize].width/2/PTM_RATIO,[self getScreenSize].height * .2833/PTM_RATIO);
//b2Vec2 newLocation = b2Vec2(x, y);
mallet->SetTransform(newLocation,0.0f);

mallet->SetFixedRotation(true);

b2FixtureDef fixtureDef;
b2CircleShape dynamicCircle;
dynamicCircle.m_radius = 0.85;        
fixtureDef.shape = &dynamicCircle;  
fixtureDef.restitution =0.1f;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.0f;
mallet1Fixture = mallet->CreateFixture(&fixtureDef);

if ([self getScreenSize].width == 768) {
    dynamicCircle.m_radius = 1.75;
}
}
它不能正常工作,因为它没有将我创建的实体放入变量mallet1中。我做错了什么

谢谢

试试这个:

-(void) setMalletProperties:(b2BodyDef *)body :(b2Body **) mallet {
body->type = b2_dynamicBody;

*mallet = world->CreateBody(body);
 ...
}
您当前的代码没有提供再次访问mallet的相同引用的方法

或者,您可以更改方法签名,如下所示:
-(b2Body*)设置锤属性:(b2BodyDef*)主体
,并包括一个
返回锤在末尾

它在以下位置显示此错误:*mallet1=world->CreateBody(body);没有“=”对不起,我以前没有看到这个错误。一个快速的Google告诉我这与并发性有关。你的程序是多线程的吗?我已经发布了另一个可能的解决方案,我正在使用cocos2d,据我所知,它不是多线程的。如果我尝试使用地址&mallet=world->CreateBody(body)来创建mallet;它说表达式是不可赋值的。是的,我真的不确定第二个例子。再次编辑,尝试一下。