首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSOSStatusError

NSOSStatusError
EN

Stack Overflow用户
提问于 2010-11-16 15:18:37
回答 2查看 2.8K关注 0票数 3

我正在尝试在我的应用程序中播放一些音频,它可以正常工作达3次。但是当我尝试在第四次玩的时候,它显示错误。错误错误代码=-43“无法完成操作。(OSStatus Domain=NSOSStatusErrorDomain -43。)”.the代码是

代码语言:javascript
复制
 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];

以前有人想过吗..?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-16 16:43:38

看起来您并没有释放AudioPlayer对象。因此,您可以播放三次的事实可能与您可以在AVAudioPlayer对象中打开的文件数有关。

查看AVAudioPlayer的委托方法:

代码语言:javascript
复制
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
- (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error

你会想做一些类似这样的事情

(在您的主代码中)

代码语言:javascript
复制
AudioPlayer.delegate = self;

然后添加如下函数

代码语言:javascript
复制
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
     [player release];
}

我相信你能弄清楚剩下的部分。

票数 1
EN

Stack Overflow用户

发布于 2010-11-16 15:26:58

您可以使用macerror命令行工具找出OSStatus代码是什么:

代码语言:javascript
复制
macerror -43

输出:

代码语言:javascript
复制
Mac OS error -43 (fnfErr): File not found

也就是说,您尝试使用的文件不存在。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4191955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档