0

私は、カチカチという音で完全な時計を表示する必要がある iOS7 専用アプリに取り組んでいます。私は 1 秒の NSTimer を使用し、AVAudioPlayer を使用して毎秒ティック音を再生します。

残念ながら、タイミングが少しずれています。タイマーが 2 ~ 22,000 秒ずれていることを測定しましたが、これは大した問題ではないと思われますが、ラグが原因で緊張が生じます.. 心臓のばたつきのようなものです :-)

少し調べてみましたが、オーディオキューサービスを使用することが唯一の方法であるように思えます..そして、その特定のフレームワークの深さをもう一度掘り下げることは本当に好きではありません.

私の質問: iOS 7 で正確にスケジュールされたサウンド イベントを取得する他の方法はありますか? それとも、NSTimers をより正確にスケジュールする方法がありますか?

4

1 に答える 1

0

NSTimer、 、またはティック期間中スリープするスレッドの生成のいずれかを使用することはlibdispatch、基になるスレッドが時間内にスケジュールされることに依存します。カーネルはこれを保証するものではありません。観察されたレイテンシは妥当に見えます。

NSTimerメインスレッドで実行すると、メインスレッドを介して配信される他のイベントとも競合するため、これらのパフォーマンスが最悪になる可能性があります。

ここでのオプションは、AVAudioPlayer でイベントをスケジュールするためのリアルタイム スレッドであるオーディオ キュー サービスを使用するか、自分でオーディオをremoteIOユニットにレンダリングすることだと思います。

AVPlayer がタイミングに関して特定の保証を提供しているとは思いません。

于 2013-10-18T13:25:36.930 に答える