小编Wan*_*use的帖子

在执行任务之前等待队列中的所有操作完成

我有一个Operation子类和操作队列,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
}
Run Code Online (Sandbox Code Playgroud)

nsoperation nsoperationqueue ios swift

8
推荐指数
2
解决办法
7773
查看次数

operation.cancel()不取消当前操作

使用operation.cancel()不会取消当前操作.如果队列中有操作,它似乎取消它,但如果它正在执行,那么它似乎不会停止它.

我是否需要将某些内容发送回我的子类操作中的main()函数以使其停止?

for operation in downloadQueue.operations {
    if operation.name == opName {
        if operation.isExecuting == true {
           operation.cancel()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

nsoperation nsoperationqueue swift

1
推荐指数
1
解决办法
779
查看次数

标签 统计

nsoperation ×2

nsoperationqueue ×2

swift ×2

ios ×1