【发布时间】:2017-07-18 15:49:17
【问题描述】:
我有一个操作子类和操作队列,maxConcurrentOperationCount = 1。
这会按我添加它们的顺序执行我的操作,这很好,但现在我需要等到所有操作完成后再运行另一个进程。
我试图使用通知组,但是因为一旦将操作添加到队列中,通知组就会在 for 循环中运行。我如何在运行另一个操作之前等待所有操作离开队列过程?
for (index, _) in self.packArray.enumerated() {
myGroup.enter()
let myArrayOperation = ArrayOperation(collection: self.outerCollectionView, id: self.packArray[index].id, count: index)
myArrayOperation.name = self.packArray[index].id
downloadQueue.addOperation(myArrayOperation)
myGroup.leave()
}
myGroup.notify(queue: .main) {
// do stuff here
}
【问题讨论】:
-
将
myGroup.leave()放入操作的完成块中。 -
使用 waitUntilAllOperationsAreFinished developer.apple.com/reference/foundation/operationqueue/…
-
请注意:您的队列保证按提交顺序执行操作仅当队列中的所有操作具有相同的相对
queuePriority并按照它们的顺序准备就绪添加到串行队列。请参阅 OperationQueue 文档 here 中的“确定执行顺序”部分
标签: ios swift nsoperation nsoperationqueue