0

私はゲームに取り組んでいますが、最初はうまく動作しすぎているように見えますが、.......長時間実行すると、サウンドが最初に機能しなくなります。[[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; nullを返し、しばらくしてview.image =で新しい画像と同じビューを設定しようとすると、コンソールにエラーが発生し、多くのファイルが開いていることを示します。ImageIO:CGImageRead_mapData'open' failed'/ Users / deno / Library / Application Support / iPhone Simulator / 5.1 / Applications / 5A0C777C-70D1-4AA0-8D7B-04A1F734C932 / cPetCakes.app / twinkles04fin32.png'エラー=24(開いているファイルが多すぎます)

今、私は新しいを作成しています。サウンドが再生されるたびに、新しいAVAudioPlayerオブジェクトを作成しています。オブジェクトを再利用する必要がありますか、それとも何らかの方法で解放する必要がありますか?allocを使用していなかったので、オブジェクトが自動的に解放されると思っていました???

サウンドのコード

-(void) PlaySound: (NSString *) name
{
    NSURL *url;

    if ( [name compare:@"chasdog"]==0)
        url  = [[NSBundle mainBundle]
                       URLForResource:name
                       withExtension:@"wav"];

        else
    url  = [[NSBundle mainBundle]
             URLForResource:name
             withExtension:@"mp3"];

    NSError *error;

    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
    audioPlayer.volume=1.0;
    audioPlayer.numberOfLoops= 0;
    [audioPlayer play];
    audioPlayer.delegate = self;    

}

新しい画像で読み込まれなくなったコード

 self.image=gPetCakeB[gGame->mPetCakeId];
4

1 に答える 1

0

プレーヤーデリゲートでは、再生が停止したらプレーヤーを解放する必要があります。

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {
    [player release];
}
于 2012-05-31T00:53:20.830 に答える