4

一連の短い (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 メソッドでデバッガーを一時停止すると、このようになる理由に本当にこだわっています。提案やアイデアはありますか?

4

1 に答える 1