2

私は現在、サウンドファイルを正確な間隔で再生する必要があるアプリに取り組んでいます。この間隔は可変です。

NSTimerは、指定された期間の後に操作が実行されるのではなく、指定された期間の後に単に操作をスタックに配置すると言われたことを覚えているようです。これは、スタックの前に他の多くの操作があった場合、時間どおりに呼び出されないことを意味します。

これが本当に正しいかどうかを知りたいのですが、正しい場合は、指定された期間後に操作が実行されることが保証される方法はありますか。

サウンドファイルが最初に遅延する可能性があるというコメントをする前に、これを回避するためにサウンドファイルはすでにプリロードされています。

4

1 に答える 1

6

AppleのNSTimerドキュメントの最初の段落には、次のようなものがあります。

タイマーはリアルタイムのメカニズムではありません。タイマーが追加された実行ループモードの1つが実行中であり、タイマーの起動時間が経過したかどうかを確認できる場合にのみ起動します。一般的な実行ループが管理するさまざまな入力ソースのため、タイマーの時間間隔の有効な解決は50〜100ミリ秒のオーダーに制限されます。長いコールアウト中、または実行ループがタイマーを監視していないモードのときにタイマーの起動時間が発生した場合、次に実行ループがタイマーをチェックするまで、タイマーは起動しません。 したがって、タイマーが実際に起動する時間は、スケジュールされた起動時間の後、かなりの期間になる可能性があります。

ですから、あなたは間違いなくあなたの予定された発砲時間の後に走る(またはあなたの場合はあなたの音を演奏する)でしょう、しかし必ずしもあなたの時間に正確ある必要はありません。

于 2012-08-06T20:00:06.667 に答える