NSOperation
が順番に実行されるようにする適切な方法は、依存関係を追加することです。依存関係は、異なるキューで異なる操作を順序付けることができるため、強力です。バックグラウンド・キューでAPI呼び出しまたはデータ処理を行うことができます。完了すると、従属操作はメインスレッドのUIを更新できます。
let operation1 = NSBlockOperation {
print("Run First - API Call")
}
let operation2 = NSBlockOperation {
print("Run Second - Update UI")
}
operation2.addDependency(operation1)
let backgroundQueue = NSOperationQueue()
backgroundQueue.addOperation(operation1)
NSOperationQueue.mainQueue().addOperation(operation2)
// operation1 will finish before operation2 is called, regardless of what queue they're in
がここNSOperation
でaddDependency
にAppleのドキュメントを参照してください。また、https://developer.apple.com/library/mac/documentation/Cocoa/Reference/NSOperation_class/index.html#//apple_ref/occ/cl/NSOperation
、それがないことすべてとしてmaxConcurrentOperationCount = 1
が唯一の1操作が一度に実行されることを確実にあると仮定して注意してください。これはキューの順序を保証しません。優先度の高い操作が最初に実行される可能性があります。