我正在开发一个涉及反复单击按钮的应用程序,我正在为此次点击提供音频反馈,即点击波形文件。
它工作正常,但我有一个问题,在完全248次后,声音不再播放,但应用程序不会崩溃。我收到以下错误:
错误域= NSOSStatusErrorDomain代码= -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];
知道为什么会这样吗?
答案 0 :(得分:4)
我只见过与流式音频相关的错误消息。 NSURL
或......
您的代码的其他问题:您什么时候发布audioPlayer
对象?如果你不是,那么你将分配大量的对象,而不是从内存中释放它们。这最终可能会导致内存消息不足。
另一个问题:Apple recommends使用IMA4编码的* .caf文件一次播放多个声音
最后,我发布了另一个问题的示例项目,该问题可能会更好地展示AVAudioPlayer
... ...查看此帖子what is the best way to play sound quickly upon fast button presses xcode?