【问题标题】:Swift 2 to 3 Migration dispatch_get_global_queue [duplicate]Swift 2 到 3 迁移 dispatch_get_global_queue [重复]
【发布时间】:2016-09-28 10:04:56
【问题描述】:

我有以下代码,我一直在尝试从 swift 2 转换为 swift 3。这是我目前所拥有的。

DispatchQueue.async(group: DispatchQueue.global(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),execute: {
            self.controllerDelegate?.codeToRun(progressWindowViewController: self)
        })

我收到一条错误消息,提示无法使用 (int,int) 类型的参数列表调用“全局”。我知道全局队列需要这个,除非他们在 swift 3 中更改它? 在 Swift 3 中做全局队列的正确方法是什么?

以前的 Swift 2 等效

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),{
            self.controllerDelegate?.codeToRun(self)
        })

【问题讨论】:

标签: swift swift2 swift3 ios10 dispatch-async


【解决方案1】:

试试这个吧。

DispatchQueue.global(qos: .background).async {

    DispatchQueue.main.async {

    }
})

如果您仍然需要任何帮助,请随时在这里提问。

【讨论】:

  • 非常感谢我正在寻找的东西。我猜他们现在做了一些新的 qos: class 来描述不同类型的线程。
  • 永远欢迎老兄..
  • 我之前的代码从主线程异步开始,希望不会有问题。我将不得不玩弄它。这段代码也会反向工作吗?喜欢从 DispatchQueue.main.async 开始?
  • 是的。它会双向工作..
  • 感谢您节省了我的时间...
【解决方案2】:

实际上,更接近和更简单的方法是:

DispatchQueue.global(qos: .default).async { ... }

【讨论】:

  • 出于好奇是什么让这个答案更快,可能会改变接受哪个答案
  • @JosephAstrahan 这不是更快,但肯定更接近您的建议,有一个完成块而不是 2 个。无论如何,选择的答案也是正确的。
猜你喜欢
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2017-02-09
  • 1970-01-01
  • 2017-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多