我有一系列需要连续播放的短(1 秒)声音片段。为此目的正在开发一个类。我正在使用以下代码:
- (void) playClip: (NSData *)clipToPlay
{
NSError *error = nil;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithData: clipToPlay error:&error];
audioPlayer.numberOfLoops = 0;
audioPlayer.volume = 1.0f;
[audioPlayer prepareToPlay];
if (audioPlayer == nil)
NSLog(@"%@", [error description]);
else
[audioPlayer play];
}
可以看出,clipToPlay
包含一个声音剪辑为NSData
. 这段代码的行为很奇怪。如果我在调试器中运行它并在以下行设置断点:
[audioPlayer play];
剪辑按预期播放 - 调试器在线路上暂停,当您逐步通过线路时,剪辑可以完美播放。但是,如果我去掉断点,它根本不会播放。
我尝试先将其复制NSData
到临时文件,结果完全相同。我还clipToPlay
以相同的结果复制到另一个变量(使用副本,而不仅仅是指针分配)(我在想也许 clipToPlay 在某个地方被破坏了)。我没有记录错误。
我真的很困惑为什么在播放方法上暂停调试器会导致这种情况发生。有什么建议或想法吗?