【发布时间】:2016-08-10 22:13:37
【问题描述】:
在 Xcode 8 beta 5 中,DispatchQueue 的初始化程序已更改为接受 qos(服务质量)、属性和自动发布频率的单独参数。虽然我将代码转换为使用新的初始化程序没有任何问题,但我不确定某些属性的含义,尤其是自动释放频率。
例如,在 Xcode 8 beta 3 和 Swift 3 中,我能够像这样创建一个序列号 DispatchQueue:
let serialQueue = DispatchQueue(label: "Concurrent Map", attributes: [.serial, .qosBackground], target: nil)
在 Xcode 8 beta 5 和 Swift 3 中:
let serialQueue = DispatchQueue(label: "Concurrent Map", qos: .background, attributes: [], autoreleaseFrequency: .inherit, target: nil)
我的问题是:
- 在新的 DispatchQueue.Attributes 中,.serial 不再是成员。这是否意味着没有 .concurrent 会创建一个串行队列。我在 Swift Playgrounds 中进行的初步测试似乎证实了这一点。其他人可以确认吗?
- 我看到 DispatchQueue.AutoreleaseFrequency 是具有 .inherit、.never 和 .workItem 的新类型。这些是什么意思?我对 GCD 和自动释放进行了一些研究,但我对自动释放池的概念不是很熟悉。
【问题讨论】:
标签: swift grand-central-dispatch swift3 xcode8