Discussion
解説
This method sets up a timer to perform the aSelector
message on the current thread’s run loop. The timer is configured to run in the default mode (NSDefaultRunLoopMode
). When the timer fires, the thread attempts to dequeue the message from the run loop and perform the selector. It succeeds if the run loop is running and in the default mode; otherwise, the timer waits until the run loop is in the default mode.
タイマーが点火した場合、スレッドはこのメッセージを実行ループからデキューして(待ち行列からはずして)セレクタを実行しようとします。実行ループが動作していてデフォルトのモードならばそれはうまくいきます;そうでなければタイマーは実行ループがデフォルトのモードになるまで待ちます。
If you want the message to be dequeued when the run loop is in a mode other than the default mode, use the perform(_:with:afterDelay:inModes:)
method instead. If you are not sure whether the current thread is the main thread, you can use the performSelector(onMainThread:with:waitUntilDone:)
or performSelector(onMainThread:with:waitUntilDone:modes:)
method to guarantee that your selector executes on the main thread. To cancel a queued message, use the cancelPreviousPerformRequests(withTarget:)
or cancelPreviousPerformRequests(withTarget:selector:object:)
method.
Special Considerations
特別な注意事項
This method registers with the runloop of its current context, and depends on that runloop being run on a regular basis to perform correctly. One common context where you might call this method and end up registering with a runloop that is not automatically run on a regular basis is when being invoked by a dispatch queue.
このメソッドは、それの現在の文脈の実行ループに登録します、そしてその実行ループが通常の原則上で動かされて正しく成し遂げられることをあてにします。あなたがこのメソッドを呼び出して自動的には通常の原則上で動かされない実行ループに登録することに終わるかもしれないよくある文脈は、ディスパッチキューによって発動されている時です。
If you need this type of functionality when running on a dispatch queue, you should use dispatch_after(_:_:_:)
and related methods to get the behavior you want.