一連の短い (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がどこかで壊れていると思っていました)。エラーがログに記録されません。
play メソッドでデバッガーを一時停止すると、このようになる理由に本当にこだわっています。提案やアイデアはありますか?