iOS での最高のタイマー レートは を使用して 1 秒あたり 60 回のようCADisplayLink
です。これは毎回 0.01666 秒です。2 つのタイマーを同時に設定して、画像の位置をより頻繁に更新できますか?
または、120 fps を達成するために、1/60 間隔の間に別の更新があるように、1 つのタイマー イベント ハンドラーが 0.00833 秒後に別のタイマー イベントを起動できますか?
iOS での最高のタイマー レートは を使用して 1 秒あたり 60 回のようCADisplayLink
です。これは毎回 0.01666 秒です。2 つのタイマーを同時に設定して、画像の位置をより頻繁に更新できますか?
または、120 fps を達成するために、1/60 間隔の間に別の更新があるように、1 つのタイマー イベント ハンドラーが 0.00833 秒後に別のタイマー イベントを起動できますか?
1 秒間に 60 回更新される画面で 120 fps を達成したいのはなぜですか?
それはCPUと電力を浪費するだけです。やらないでください。
ただし、より頻繁に起動するタイマーを使用することは間違いなく可能です。
ただし、これらの各コールバックを描画することはできません。(少なくとも -drawRect: を使用して、OpenGL については知りません)。
いくつかの理由でこれを行うことはできません。まず、ハードウェアの制限により、60 fps にハード キャップがあります。第二に、NSTimer は、この種のことに対して十分に正確ではありません。Timer Programming Topics - Timer documentation (強調のために太字が追加されています) から:
タイミング精度
タイマーはリアルタイムのメカニズムではありません。タイマーが追加された実行ループ モードの 1 つが実行中で、タイマーの起動時間が経過したかどうかを確認できる場合にのみ起動します。典型的な実行ループが管理するさまざまな入力ソースのため、タイマーの時間間隔の有効な分解能は 50 ~ 100 ミリ秒程度に制限されます。実行ループがタイマーを監視していないモードにあるとき、または長いコールアウト中にタイマーの起動時間が発生した場合、実行ループが次にタイマーをチェックするまで、タイマーは起動しません。したがって、タイマーが起動する実際の時間は、スケジュールされた起動時間よりもかなり長い時間になる可能性があります。