【发布时间】:2021-03-17 14:14:56
【问题描述】:
真的很奇怪,为什么第一个操作的位置在将挂起状态更改为false后没有更改。
let operationQueue = OperationQueue.main
let operation1 = BlockOperation { print("1") }
operation1.queuePriority = .low
let operation2 = BlockOperation { print("2") }
operation2.queuePriority = .normal
let operation3 = BlockOperation { print("3") }
operation3.queuePriority = .high
let operation4 = BlockOperation { print("4") }
operation4.queuePriority = .veryHigh
operationQueue.isSuspended = true
operationQueue.addOperation(operation1)
operationQueue.addOperation(operation2)
operationQueue.addOperation(operation3)
operationQueue.addOperation(operation4)
operationQueue.isSuspended = false
打印输出:
1
4
3
2
预期的打印输出:
4
3
2
1
UPD
仅注意到 OperationQueue.main 的此行为。对于带有maxConcurrentOperationCount = 1 的自定义OperationQueue(),可以按预期工作。
【问题讨论】:
-
参见developer.apple.com/documentation/foundation/operation/… 中关于使用
queuePriority管理操作订单的注意事项的注释。
标签: ios swift nsoperationqueue