目に見えるランニングタイマーがあるゲームがありますが、小数点以下2桁の精度(#。##)しか達成できません。これはフレームワークの制限ですか、それとも回避策がありますか?このタイマーで4〜6桁の精度(#。######)を達成しようとしています。
回答:
回答№1は2iOSのタイマーは60Hzの最大周波数で実行されるため、2桁の精度しか得られません。
時間をかけて回避策を講じることができますそして、あなたのイベントの開始し、次にイベントの終了時に時間を取り、差を計算します。今回は、フレームレートの低下、一時停止、バックグラウンドへの移動などは考慮されません。
回答№2の場合は1
これは、基礎となるシステムの制限です。 iOSはリアルタイムシステムではなく、タイマーはいわゆる実行ループでスケジュールされます。これは、タイマーが期限になるとタイマーをディスパッチします。ただし、タイマーが正確にディスパッチされるようにするには、実行ループを十分に頻繁に実行し、反復ごとにタイマーをチェックする必要があります。ただし、実行ループは他の機能も実行します。たとえば、イベントメカニズム全体、メッセージ、ネットワークが実行ループで実行されるため、タイマーは数ナノ秒ごとにチェックされません(また、実行ループは一貫して実行されませんが、システムに戻る時間)