我已经使用 Xcode8 beta4 将现有的 Swift2.3 代码转换为 Swift3.0。 Xcode 自动将语法转换为 Swift3.0,但无法创建串行调度队列。
private let serialQueue = DispatchQueue(label: "identifier", qos: DispatchQueue.Attributes.serial)
不再有
.serial
属性,但调度队列是
默认情况下是串行的,除非您指定 .concurrent
属性:
let serialQueue = DispatchQueue(label: "label")
let concurrentQueue = DispatchQueue(label: "label", attributes: .concurrent)
来源: 如何使用 Xcode 8 beta 4 在 swift 3 中创建串行 DispatchQueue? 在 Apple 开发者论坛中。
使用 DispatchQueueSerial 或 DispatchQueueConcurrent 构造函数,这样您将获得正确的默认值。这两个构造函数都不允许您请求串行或并发执行,因为这是内置在类中的。 DispatchQueue 会给你一些不正确的默认值。