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 (または同等の値) に設定されます。したがって、クラスのオブジェクトがインスタンス化されていない場合、インスタンス変数が存在するため、余分な労力を費やす必要はなく、送信nilされdeallocreleaseメッセージは効果がありません。

于 2011-06-28T14:46:00.333 に答える
0

オプションの変数が必要ない場合は nil であることを確認し、解放する前に nil チェックを行います。

于 2011-06-28T14:43:52.607 に答える