Instance Method インスタンスメソッド

run()

Puts the receiver into a permanent loop, during which time it processes data from all attached input sources. レシーバをある永久ループの中に置きます、その時間の間にそれは全ての添付された入力ソースからのデータを処理します。

Declaration 宣言

func run()

Discussion 議論

If no input sources or timers are attached to the run loop, this method exits immediately; otherwise, it runs the receiver in the NSDefaultRunLoopMode by repeatedly invoking run(mode:before:). In other words, this method effectively begins an infinite loop that processes data from the run loop’s input sources and timers. 入力ソースまたはタイマーが実行ループに添付されないならば、このメソッドは直ちに退出します;そうでなければ、それはレシーバをNSDefaultRunLoopModeにおいて、繰り返しrun(mode:before:)を発動することによって走らせます。言い換えれば、このメソッドは事実上、実行ループのもつ入力ソースとタイマーからのデータを処理するある無限ループを開始します。

Manually removing all known input sources and timers from the run loop is not a guarantee that the run loop will exit. macOS can install and remove additional input sources as needed to process requests targeted at the receiver’s thread. Those sources could therefore prevent the run loop from exiting. 全ての既知の入力ソースとタイマーを実行ループから手動で取り除くことは、実行ループが退出する保証ではありません。macOSは、追加の入力ソースを必要に応じてインストールおよび除去して、レシーバのもつスレッドで目標とされる要請それらを処理できます。これらのソースは、従って実行ループが退出することを妨げます。

If you want the run loop to terminate, you shouldn't use this method. Instead, use one of the other run methods and also check other arbitrary conditions of your own, in a loop. A simple example would be: あなたが実行ループを終わらせたいならば、あなたはこのメソッドを使うべきではありません。代わりに、他のrunメソッドの1つを使ってください、そしてまた他の随意のあなた独自の条件を、ループにおいて調べてください。単純な例は以下になるでしょう:


BOOL shouldKeepRunning = YES; // global
NSRunLoop *theRL = [NSRunLoop currentRunLoop];
while (shouldKeepRunning && [theRL runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]);

where shouldKeepRunning is set to false somewhere else in the program. そこにおいてshouldKeepRunningfalseにプログラムのどこか他で設定されます。

See Also 参照

Running a Loop ループを実行する