0

次のコードブロックがあります

-(void) spawnEnemies:(ccTime)dt
{

    static float lastSpawn;
    lastSpawn += dt;

    if (lastSpawn > 0.75) {
        for (NSDictionary *enemyData in levelData.enemies) {
            if ([[enemyData valueForKey:@"spawnCount"] intValue] < [[enemyData valueForKey:@"quantity"] intValue]) {
                // reset spawn timer
                lastSpawn = 0;

                // init enemy
                id enemy = [NSClassFromString([enemyData valueForKey:@"className"]) enemyInit];
                [enemy startAnimating];
                [enemy setSpawnPosition];
                [enemy moveToSpriteInit:playerSprite];
                [self addChild:enemy];
                [enemy release];

                NSNumber *spawnCount = [enemyData valueForKey:@"spawnCount"];
                [enemyData setValue:[NSNumber numberWithInt:([spawnCount intValue] + 1)] forKey:@"spawnCount"];
            }
        }
    }
}

この行の理由を知りたい:

[enemyData setValue:[NSNumber numberWithInt:([spawnCount intValue] + 1)] forKey:@"spawnCount"];

不正なアクセス エラーをスローしていませんか? 反復ごとに各敵のスポーン数を更新しようとしています。for ループ内で levelData.enemies 配列を再構築し、for ループが完了したら、スポーン カウント値が更新された新しい配列を levelData.enemies に再割り当てする必要がありますか?

4

1 に答える 1

0

私はばかげています。forループオブジェクトタイプをNSDictionaryからNSMutableDictionaryに更新しておらず、NSDictの値を変更できないことに気づきました。

于 2012-11-03T07:04:26.480 に答える