如果我想在另一個類中分配一個類,我想很容易地引用它,但是有時候這個類不需要被分配,因此不會被分配。這是如何完成的?我可以在dealloc中放置一個條件,因此它不必被釋放?有條件的alloc/dealloc? [Objective-c and 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需要保持引用,以便它可以滾動的地圖。但如果我沒有分配它,我怎麼不去dealloc?
「Cocos2D」需要保持參考的含義是什麼?它是否爲了自己的目的而實例化變量? –
是的。如果我在設定位置後立即釋放rushH和rushV,遊戲將開始正常,但如果我移動地圖,它將立即崩潰。在我自己的代碼中,我沒有在地圖上引用這些對象,直到玩家在地圖上與它們碰撞,所以Cocos2D必須使用它們的引用來使rushH和rushV隨着地圖移動。 – VagueExplanation
爲什麼不在分配之前檢查'rushH'和'rushV'是否爲'nil'?記錄它們。 –