2

時間の遅れの後に実行したいメソッドがあります(繰り返しはありません)。

performSelector:afterDelay を使用するか、NSTimer をスケジュールして、そのパラメーターとしてセレクターを指定することができます。

最終結果が同じである場合、一方を他方よりも使用することの利点/欠点は何ですか (つまり、指定された時間遅延の後にメソッドが呼び出されます)。どちらを使用しても問題ありませんか?

(関連する場合、私のメソッドは、フォアグラウンドと、beginBackgroundTaskWithEcpirationHandler を介して利用可能な 10 分間のウィンドウの間にアプリがバックグラウンドに移動したときの両方で呼び出されます)。

ティア

4

1 に答える 1

3

performSelector: メソッドに関する NSObject クラスの Apple リファレンスから

このメソッドは、現在のスレッドの実行ループで aSelector メッセージを実行するタイマーを設定します。タイマーは、デフォルト モード (NSDefaultRunLoopMode) で実行するように構成されています。タイマーが起動すると、スレッドは実行ループからメッセージをデキューし、セレクターを実行しようとします。実行ループが実行中で、デフォルト モードの場合は成功します。それ以外の場合、タイマーは実行ループがデフォルト モードになるまで待機します。

なので、1回だけ通話したいなら自由に使っていいと思いますperformSelector:afterDelay:

于 2012-06-05T17:07:02.620 に答える