我正在尝试在我的应用程序中播放一些音频,它可以正常工作达3次。但是当我尝试在第四次玩的时候,它显示错误。错误错误代码=-43“无法完成操作。(OSStatus Domain=NSOSStatusErrorDomain -43。)”.the代码是
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/Sun.wav", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
AudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
AudioPlayer.numberOfLoops = 0;
AudioPlayer.volume=1.0;
if (AudioPlayer == nil)
{
NSLog([error description]);
}
else
[AudioPlayer play];以前有人想过吗..?
发布于 2010-11-16 16:43:38
看起来您并没有释放AudioPlayer对象。因此,您可以播放三次的事实可能与您可以在AVAudioPlayer对象中打开的文件数有关。
查看AVAudioPlayer的委托方法:
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error你会想做一些类似这样的事情
(在您的主代码中)
AudioPlayer.delegate = self;然后添加如下函数
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
[player release];
}我相信你能弄清楚剩下的部分。
发布于 2010-11-16 15:26:58
您可以使用macerror命令行工具找出OSStatus代码是什么:
macerror -43输出:
Mac OS error -43 (fnfErr): File not found也就是说,您尝试使用的文件不存在。
https://stackoverflow.com/questions/4191955
复制相似问题