0

initWithFireDate:これを説明するためにコードを貼り付ける必要があるかどうかはわかりません。おそらく見落としているのは簡単なことですが、過去の時間を選択すると、すぐに NSTimer が起動します。これはおそらく予想される動作ですが、NSTimer のクラス リファレンスには記載がありません。

ありがとう!

sc。

4

1 に答える 1

1

それほど明示的ではありません、[1]が言及しています

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

長いコールアウト中に発生する可能性のある起動時間について繰り返し言及したことから、すべてのタイマーには、間隔を使用して直接または間接的に起動時間が設定されていると推測できます。次に、実行ループは、過去の起動時刻があるかどうかをチェックし、そうであれば、その時刻に起動し、繰り返しなどをスケジュールします。これにより、観察した動作が発生します。

[1] http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/Reference/NSTimer.html

于 2011-11-23T09:59:56.197 に答える