クラスを別のクラスの内部に配置したいと思ったら、簡単に参照したいのですが、このクラスをalloc'dする必要はないため、deallocされません。これはどうですか? deallocの中に条件付きを入れて解放する必要はありませんか?条件付きのalloc/dealloc? [Objective-cとCocos2D]
さらに詳しくは、私はCocos2Dを使用しています。割り当てられる必要があるかもしれないし、ないかもしれないプレーヤー能力クラスがあります。私の初期設定で:
// Abilities
if(abilityRushH == 0){
objects = [theMap objectGroupNamed:@"oj"];
startPoint = [objects objectNamed:@"item_ability_rushH"];
x = [[startPoint valueForKey:@"x"] intValue];
y = [[startPoint valueForKey:@"y"] intValue];
rushH = [[RushHorizontal alloc] init];
[self addChild:rushH.rushHSpriteSheet];
rushH.rushHSprite.position = ccp(x,y);
}
if(abilityRushV == 0){
objects = [theMap objectGroupNamed:@"oj"];
startPoint = [objects objectNamed:@"item_ability_rushV"];
x = [[startPoint valueForKey:@"x"] intValue];
y = [[startPoint valueForKey:@"y"] intValue];
rushV = [[RushVertical alloc] init];
[self addChild:rushV.rushVSpriteSheet];
rushV.rushVSprite.position = ccp(x,y);
}
Cocos2Dはマップをスクロールできるように参照を保持する必要があります。しかし、私はそれをalloc'ingていない場合、私はどのようにdeallocしないのですか?
「Cocos2D」は参照を保持する必要がありますか?それはそれ自身の目的のために変数をインスタンス化しますか? –
うん。ポジションを設定した直後にrushHとrushVをリリースすると、ゲームはうまく始まりますが、マップを移動するとすぐにクラッシュします。私のコードでは、プレイヤーがマップ上でそれらのオブジェクトと衝突するまでそれらのオブジェクトを参照する場所はありません。そのため、Cocos2DはrushHとrushVをマップと一緒に移動させるために参照を使用している必要があります。 – VagueExplanation
割り振る前に 'rushH'と' rushV'が 'nil'であるのをチェックしてみませんか?それらを記録する。 –