我正在制作一个用户可以按下前进/后退按钮的应用程序。每次按下这些按钮时,任何当前正在播放的音频文件都会停止,并开始另一个音频文件。所有这些文件都不会循环。
我正在使用类似于以下的代码播放音频文件:
audioURL2 = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"sound2" ofType:@"aac"]];
audio2 = [[AVAudioPlayer alloc] initWithContentsOfURL:audioURL2 error:nil];
[audio2 play];
audio1 = nil;
audio3 = nil;
我启用了 ARC,所以我没有明确发布音频文件。
在大多数情况下,上面的代码工作正常。我在我的 iPhone 设备、iPhone 或 iPad 模拟器上都没有遇到问题。我的 iPad 设备上的大部分音频也可以使用。
但是,其中一个音频文件没有完全播放,即使我在播放时避免触摸按钮。每次我在 iPad 上播放此音频文件时,我都能听到音频文件的开头,但随后在同一位置被切断。这个问题只发生在我的 iPad 上,不会出现在任何其他设备或模拟器上。
这是我到目前为止所尝试的:
- 从 iPad 上删除了该应用程序。清理、重建并重新安装应用程序
- 重新启动 iPad
- 确保静音/软静音已关闭
- 切换静音/软静音几次,然后关闭静音
- 增加 iPad 的音量
在尝试了上述每个之后,我发现同一个音频文件在同一个地方被切断了。
为什么会发生这种情况,并且只针对一个文件?我该如何解决?
更新
我尝试@property (strong, nonatomic) AVAudioPlayer *audio2;
在我的标题中使用,然后尝试用“保留”替换“强”,但我仍然遇到同样的问题。
接下来,我在播放调用之前卡住audio2.numberOfLoops = 1;
了,看看会发生什么。有趣的是,audio2 确实重复了,但每个循环都在之前的截止点处结束。将 sound2 添加到 iPad 版本时可能出了什么问题?