【发布时间】:2017-02-14 09:50:34
【问题描述】:
参考https://developer.apple.com/reference/foundation/operation,我将 Playground 设置为 -
class myOperation1 : Operation {
override func main() {
print("op1 working....")
}
}
class myOperation2 : Operation {
override func main() {
print("op2 working....")
}
}
let op1 = myOperation1()
let op2 = myOperation2()
op1.completionBlock = {
print("op1 finished")
}
op2.completionBlock = {
print("op2 finished")
}
op2.addDependency(op1)
let opsQue = OperationQueue()
opsQue.addOperation(op1)
opsQue.addOperation(op2)
控制台日志是 -
op1 working....
op2 working....
op1 finished
op2 finished
我们不应该期望输出是依赖的结果吗? -
op1 working....
op1 finished
op2 working....
op2 finished
使用相同的结果 - opsQue.addOperations([op1, op2], waitUntilFinished: true)
op1 working....
op2 working....
op1 finished
op2 finished
【问题讨论】:
-
为了避免代码排序,可以使用
opsQue.addOperations([op1, op2], waitUntilFinished: true) -
并尝试依赖和不依赖
-
@WeiJay:也许我不应该在 Playground 中观察到这种行为,在实际项目中它应该可以按预期工作
-
@BaSha 不,在操场上检查它应该反映相同的输出,如果你想重新测试它,只需点击蓝色箭头按钮(执行操场),这将重新运行代码,你每次运行都会看到不同的结果:)
-
@AhmadF: 没错,同样的依赖,我看到不同的结果:)
标签: ios swift nsoperation nsoperationqueue