次のコードブロックがあります
-(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 に再割り当てする必要がありますか?