我正在尝试使用 AVAudioPlayer 快速连续播放一些声音。当我不那么频繁地调用声音播放函数以便在再次调用该函数之前完全播放声音时,应用程序运行良好。但是,如果我快速连续调用该函数(以便在播放之前的声音时播放声音),应用程序最终会在调用该函数约 20 次后崩溃,并显示消息“EXC_BAD_ACCESS”。这是该函数的代码:
NSString *nsWavPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:wavFileName];
AVAudioPlayer* theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:nsWavPath] error:NULL];
theAudio.delegate = self;
[theAudio play];
正如另一个线程中提到的,我实现了以下委托函数:
- (void) audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
if(!flag)
NSLog(@"audio did NOT finish successfully\n");
[player release];
}
但是在大约 20 次快速调用该函数后,该应用程序仍然崩溃。知道我做错了什么吗?