【问题标题】:AVAudioPlayer doesn't work after 248 timesAVAudioPlayer 在 248 次后不起作用
【发布时间】:2010-08-03 21:53:50
【问题描述】:

我正在开发一个涉及重复单击按钮的应用程序,并且我正在为此单击提供音频反馈,即单击波形文件。

它工作正常,但我有一个问题,正好 248 次后,声音不再播放,但应用程序没有崩溃。我收到以下错误:

Error Domain=NSOSStatusErrorDomain Code=-43 “操作无法完成。(NSOSStatusErrorDomain 错误 -43。)”

这是我正在使用的代码,(非常标准)

//file.h
AVAudioPlayer *audioPlayer;


//file.m
    NSString *path=[[NSBundle mainBundle] pathForResource:@"click" ofType:@"wav"];

        [audioPlayer stop]; //I added this in one of my trials to solve it.
        audioPlayer= [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path]  error:&err];
        audioPlayer.numberOfLoops=0;
        audioPlayer.delegate=self;
           [audioPlayer prepareToPlay];



        if (audioPlayer==nil)
            NSLog(@"%@, %@",path,[err description]);
        else
        [audioPlayer play];

知道为什么会这样吗?

【问题讨论】:

  • 创建一个双倍大小和长度的声音文件(也许使用音频工具将现有剪辑加倍)并进行实验。 124次后会出现问题吗?另外,你的目标是什么版本的iOS?你安装了什么SDK?你在什么设备上测试?

标签: iphone avaudioplayer


【解决方案1】:

我只见过与流式音频相关的错误消息。 NSURL 或 ...

可能会发生一些奇怪的事情

您的代码的其他问题:您何时释放audioPlayer 对象?如果你不是,你分配了很多对象并且永远不会从内存中释放它们。这最终可能导致内存不足的消息。

另一个问题:Apple recommends 使用 IMA4 编码的 *.caf 文件一次播放多个声音

最后,我发布了一个来自另一个问题的示例项目,它可能显示了使用AVAudioPlayer 的更好方法...请参阅此帖子what is the best way to play sound quickly upon fast button presses xcode?

【讨论】:

  • 你是对的,我没有正确释放音频播放器,我之前没有注意到,但是在你指出之后,我再次检查了我的代码,并修复了它。现在可以了,谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多