如果我想在另一个内部分配一个类并且我想轻松引用它,但有时这个类不需要被分配,因此不会被释放。这是怎么做到的?我可以在dealloc中放置一个条件,这样它就不必被释放了吗?
更详细地说,我正在使用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?
答案 0 :(得分:3)
由于您正在讨论在dealloc
中发布它,因此会有一个实例变量。现在,当分配了Objective-C类的任何实例时,其所有对象都是nil
,并且c类型被设置为0(或等效值)。因此,如果未实例化类的对象,则不需要付出额外的努力,因为实例变量在nil
处为dealloc
,因此发送给它的release
消息将没有效果。
答案 1 :(得分:0)
确保可选变量在不需要时为nil,并在dealloc'ing之前进行nil检查。