AVAudioPlayer,很多声音

问题描述:

在我的应用程序中,我使用AVAudioPlayer播放一些mp3。我的代码是:AVAudioPlayer,很多声音

- (void) play{ 
    NSString *path = [NSString stringWithFormat:@"%@/%@", 
         [[NSBundle mainBundle] resourcePath], 
         [arraysound objectAtIndex:appDelegate.indexSound]]; 
    NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO]; 
    soundID = [[AVAudioPlayer alloc] initWithContentsOfURL:filePath error:nil]; 
    soundID.delegate = self; 
    [soundID prepareToPlay]; 
    [soundID play]; 
} 

但我有40个声音播放;我用每次soundID发挥出自己的声音

例子中,我sound1.mp3,sound2.mp3,sound3.mp3 ......

我怎样才能释放我soundId?

当我的声音改变我称之为“玩”的方法,但这种方法的alloc一个新的AVAudioPlayer每次

我知道

- (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *) player 
        successfully: (BOOL) flag { 

,但我不明白如何释放此委托在我的声音ID方法,因为如果我释放内soundId我的应用程序崩溃 “的shm_open失败:‘过了几分钟,我用我的应用我有崩溃此消息后,苹果音频队列’

请帮我...谢谢

+0

您是否在等待每个声音完成调用委托方法的位置,还是您手动更改它们? – sooper 2012-04-23 23:46:33

你不想在你的委托方法中释放soundID。你想发布player。从你的代码来看,soundID是一个伊娃。代表被调用时,soundID可能已被设置为另一个值。但player参数将是刚刚完成播放的AVAudioPlayer