performSelector:withObject:afterDelay: に 1 秒未満の時間を渡すことはできますが、タイマーは 1 秒未満の遅延に対してできるだけ早く起動するようです。たとえば、遅延を 100 ミリ秒 (0.100) または 10 ミリ秒 (0.010) に設定した場合でも、タイマーは 2 または 3 ミリ秒で起動します。これは既知の制限ですか?
performSelection:withObject:afterDelay: の場合、遅延に関するドキュメントには次のように記載されています。
delay — メッセージが送信されるまでの最小時間。遅延を 0 に指定しても、セレクターがすぐに実行されるとは限りません。セレクターは引き続きスレッドの実行ループでキューに入れられ、できるだけ早く実行されます。
これを NSTimer と比較してください。ドキュメントには次のように記載されています。
seconds — タイマーの発火間の秒数。秒が 0.0 以下の場合、このメソッドは代わりに 0.1 ミリ秒の負でない値を選択します。
performSelector:withObject:afterDelay: は、負の値が指定されたときに NSTimer の秒設定と同じように遅延設定を使用しているようです。
誰でもそれが正しいことを確認できますか?