fire
シンプルなOSXメニューバーアプリケーションがあり、ステータスアイテムにメニューが添付されており、NSTimerに手動で送信できるメニューアイテムがあります。
そのメニュー項目に、次にタイマーが起動するまでの秒数を表示したいと思います。次の発砲までの時間またはNSTimerが次に発火する時間を取得する方法はありますか?
NSTimerには、NSDateを返すfireDateがあります。NSDateにはtimeIntervalSinceNowがあります。
すでに受け入れられている答えがあることは知っていますが、あなたが実際にはまったく興味がないかもしれないということが私に思い浮かびましたfireDate
。
その日付を使用すると、時刻が表示されている限り、同じ秒数しか表示されません。メニューバーに直接表示されている場合、進行状況は表示されません…</ p>
そのため、少し異なるアプローチを提案します。
シンプル:NSTimer
リアルタイムのものではありません。タイマーが起動する実際の日付とそのスケジュールfireDate
は少し異なります。ただし、タイマーを繰り返すと、その差を調整せずに再スケジュールされるため、これらの偏差が加算されます。
これらの偏差は、アプリの負荷だけでなくシステム全体にも依存するため、完全に予測できません。したがって、それらは「完全に無視できる」と「ZOMFG」の間で異なります。