2

iphone ゲーム チュートリアルの 2 番目の部分を使用していますが、ccTouchesEndedメソッドの実装について混乱しています。ここで「射撃」が実装されます: プレイヤー (大砲) が触れた方向に向きを変え、発射体が発射されます。私には不明な部分は次のとおりです。_nextProjectileまだ使用されている可能性がある間にリリースされたようです(そのすぐ下のコードによって - _nextProjectile runAction)。この時点でオブジェクトを解放しても安全な理由を説明していただけますか?

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

[_player runAction:

 [CCSequence actions:

  [CCRotateTo actionWithDuration:rotateDuration angle:cocosAngle],

  [CCCallBlock actionWithBlock:^{

     // OK to add now - rotation is finished!

     [self addChild:_nextProjectile];

     [_projectiles addObject:_nextProjectile];



     // Release

     [_nextProjectile release];

     _nextProjectile = nil;

 }],

  nil]];



// Move projectile to actual endpoint

[_nextProjectile runAction:

 [CCSequence actions:

  [CCMoveTo actionWithDuration:realMoveDuration position:realDest],

  [CCCallBlockN actionWithBlock:^(CCNode *node) {

     [_projectiles removeObject:node];

     [node removeFromParentAndCleanup:YES];

 }],

  nil]];



}
4

1 に答える 1