Swift3 全局与用户队列

Swift3 全局与用户队列,swift3,grand-central-dispatch,Swift3,Grand Central Dispatch,我想让一个UI按钮按下触发一个代码块,所以我创建了一个队列并异步向它发送了一个块,但我没有看到该块在合理的时间内启动 最小化示例: class InterfaceController: WKInterfaceController { ... let queue = DispatchQueue(label: "unique_label", qos: .userInteractive) @IBAction func on_press() { print("T

我想让一个UI按钮按下触发一个代码块,所以我创建了一个队列并异步向它发送了一个块,但我没有看到该块在合理的时间内启动

最小化示例:

class InterfaceController: WKInterfaceController {
    ...
    let queue = DispatchQueue(label: "unique_label", qos: .userInteractive)

    @IBAction func on_press() {
        print("Touch")
        queue.async {
            // Stuff
        }
    }
}
因此,我在控制台中看到了“Touch”行,但异步块中没有任何内容发生

奇怪的是,如果我使用
let queue=DispatchQueue.global()
,它似乎可以按预期工作。那么,创建自己的队列和在这里使用全局队列在操作上有什么区别呢?我希望我的QoS能给它一些CPU时间

那么,创建自己的队列和 在这里使用全局的吗

创建具有高优先级的.serial队列

let queue = DispatchQueue.global()
实际上不创建任何内容,但返回具有qos的全局(系统).concurrent queue。默认值

当您创建自己的队列时,系统将决定在哪个全局队列上发送您的执行请求。队列不是执行引擎

我无法相信,您的代码从未执行过,这不太可能是真的。如果它发生了,那么问题一定在代码中的某个地方,而这不是问题的一部分

let queue = DispatchQueue.global()