0

答えのない質問がたくさん寄せられています...誰かが私を助けてくれることを願っています.

そのため、アプリでシングルトンを作成し、シーンをリロードしましたが、敵のパスのデータにアクセスしようとすると、このメッセージが表示されます。

シングルトンのコードは次のとおりです

初期で:

 NSString *resourcePath = @"EnemyPaths";
    NSString *levelDefsFile = [[NSBundle mainBundle] pathForResource:resourcePath ofType:@"plist"];
    _enemyPaths = [[NSDictionary alloc] initWithContentsOfFile:levelDefsFile];

シーンをリロードするときに、シングルトンでこの関数を呼び出して古いデータを解放します

-(void) resetGameData
{
    [enemy1 release];
    [enemy2 release];
    [enemy3 release];
    [enemy4 release];
    [enemy5 release];
    [enemy6 release];
    [enemy7 release];
    [enemy8 release];
    [enemy9 release];
    [enemy10 release];

    [self setupEnemyPaths];
}

-(void) setupEnemyPaths
{
    NSString *getLevel = [NSString stringWithFormat:@"Level%d", CURRENT_LEVEL];
    NSAssert(_enemyPaths != nil, @"Couldn't open EnemyPaths file");
    _level = (NSDictionary *) [_enemyPaths objectForKey:getLevel];
    NSAssert(_level != nil, @"Couldn't find Level entry");

...
}

エラーが発生します

_level = (NSDictionary *) [_enemyPaths objectForKey:getLevel];

しかし、理由はわかりません- _enemyPaths が割り当てられていて、解放したことがありません..または何か不足していますか? 助けてください!

4

1 に答える 1

0

解決しました。アイテムはコピーではなく直接使用され、各アイテムのコピーに切り替えられ、すべて問題ないと思います。呼び出し時に空の Dictionary を持つことになったに違いありません。

于 2012-10-16T23:45:56.717 に答える