0

如果我想在另一个类中分配一个类并且我想轻松引用它,但有时这个类不需要被分配,因此不需要被释放。这是怎么做到的?我可以在 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 需要保留引用,以便它可以随地图滚动。但是如果我不分配它,我怎么不解除分配?

4

2 回答 2

3

由于您正在谈论在 中发布它dealloc,因此将有一个实例变量。现在,当分配 Objective-C 类的任何实例时,它的所有对象都是nil并且 c 类型设置为 0(或等效值)。因此,如果您的类的对象没有被实例化,您不需要付出任何额外的努力,因为实例变量将nildealloc,因此release发送给它的消息将无效。

于 2011-06-28T14:46:00.333 回答
0

确保可选变量在不需要时为 nil,并在解除分配之前进行 nil 检查。

于 2011-06-28T14:43:52.607 回答