Objective c 我的for-in循环中有一个坏的_访问
我有以下代码块Objective c 我的for-in循环中有一个坏的_访问,objective-c,cocos2d-iphone,Objective C,Cocos2d Iphone,我有以下代码块 -(void) spawnEnemies:(ccTime)dt { static float lastSpawn; lastSpawn += dt; if (lastSpawn > 0.75) { for (NSDictionary *enemyData in levelData.enemies) { if ([[enemyData valueForKey:@"spawnCount"] intValue]
-(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"];
}
}
}
}
抛出的是错误的访问错误吗?我试图在每次迭代中更新每个敌人的繁殖数量。我是否需要在for循环中重建levelData.friends数组,并在for循环完成后使用更新的繁殖计数值将新数组重新分配给levelData.friends?我很笨,我刚刚意识到我没有将for循环对象类型从NSDictionary更新为NSMutableDictionary,无法更改NSDict中的值,duh 将有助于了解更多有关定义此方法的类的信息,包括类的.h
@接口
等。此外,addChild:
方法的实现细节是什么?它是一个cocos2d层类/CClayer我很确定错误访问来自for循环中迭代对象的值重新分配,我只想知道这是肯定的。如果我注释掉我所说的特定行,则不会发生这种情况。前一行是否可以将spawnCount
设置为空指针?不,不是,如果我记录它,它有一个值。
[enemyData setValue:[NSNumber numberWithInt:([spawnCount intValue] + 1)] forKey:@"spawnCount"];