最近Swiftでマルチスレッドの学習を始めました。NSOperationQueue
とNSOperation
のクラスを使って基本的なマルチスレッドを試したかったのです。 (Xcodeでコマンドラインツールのプロジェクトの).swiftファイルのグローバルスコープでNSOperationQueue操作が完了していませんか?
が、私はこの2つの関数を定義した:
func foo() { /* prints from 1 to 26 */ }
func bar() { /* prints from a to z */ }
、私はNSOperationQueueをインスタンス化し、次のように行った:
let queue = NSOperationQueue()
queue.addOperationWithBlock(foo)
queue.addOperationWithBlock(bar)
私はプログラムを実行し、出力がありません。 なぜですか?
メインスレッドことになっているものを、この例では、グローバルスコープはので、私はこれやった上で、私は、キュー外にいくつかの出力を印刷してみてください:
print("START")
let queue = NSOperationQueue()
queue.addOperationWithBlock(foo)
queue.addOperationWithBlock(bar)
print("END")
をそして、この「のように」出力を得ました:
START
END
0
1
キューの操作が適切に実行されていないようです。メインスレッドはキューが終了するのを待っていませんか?