私はこれを初めて使っていて、手がかりがありません。今はかなり読んだことがありますが、どういうわけか彼らはすべてこれを説明していないようです。obj-c弱いリンクなどで亡くなった
私はゲームに取り組んでいますが、どういうわけかこれで迷ってしまいます。
GameScene.hはの界面での次の宣言を持っています(BOX2Dを使用して、そう.mmを必要とする)GameScene.mm内部
Player *player;
b2Body *b2PlayerBody;
機能で、私は別のクラスから来ているプレーヤーを(作成します)私は使用したボディにこのb2PlayerBodyを設定し、それをプレーヤクラスにプッシュして操作します。
- (void)update:(ccTime)dt withBody:(b2Body *)body;
とのためdeclatration :
[player update:dt withBody:b2PlayerBody]; //update player
player.hファイルで、私が持っている:私は呼んで、このファイルの私の更新方法では
-(void) addPlayerAtPosition:(CGPoint)p
{
CCLOG(@"Adding player at %0.2f x %02.f",p.x,p.y);
// Player
player = [[Player alloc] initWithPosition:ccp(p.x, p.y)];
player.anchorPoint = ccp(0,0.5);
[self addChild:player z:10 tag:kTagPlayerNode];
// Define the dynamic body.
//Set up a 1m squared box in the physics world
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO);
b2PlayerBody = world->CreateBody(&bodyDef);
// Define another box shape for our dynamic body.
b2PolygonShape dynamicBox;
dynamicBox.SetAsBox(.5f, .5f);//These are mid points for our 1m box
// Define the dynamic body fixture.
b2FixtureDef fixtureDef;
fixtureDef.shape = &dynamicBox;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.3f;
b2PlayerBody->CreateFixture(&fixtureDef);
[player setPhysicsBody:b2PlayerBody];
}
は、(dtはデルタです) player.mmファイルがあります。
- (void)update:(ccTime)dt withBody:(b2Body *)body {
}
起動すると
、それは私が間違って何をやっている
[player update:dt withBody:b2PlayerBody]; //update player
任意のエラーテキストなしGameScene.mmからの更新にクラッシュしますか?
はまた誰かが(これは愚かな質問であれば申し訳ありません)の違いは何であるか私にepxlainできb2PlayerBody * b2Body
間; b2Body * b2PlayerBody; //これは弱いリンクであることは分かっていますが、diffは何ですか? b2Body b2PlayerBody;
また、これらのリンク方法は、リリースメソッドのメモリ解放に影響しますか?なしメモリ管理キーワード(それぞれ「割り当てる」プロパティ)で
私は(b2Body *)body {(メソッド内では(b2body *)}をinitで...解決しています...まだ知りたい... – renevdkooi