请帮我将此行转换为swift 3.0:
dispatch_async(DispatchQueue.global(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0))
它究竟意味着什么?类似于:在主队列中的括号中执行代码?
提前致谢。
PS。这行代码取自apple's code以处理核心数据
答案 0 :(得分:7)
在Swift 3中你可以像这样写
DispatchQueue.global(qos: .background).async {
}
这意味着括号中所写的每个代码都将在后台执行。如果要在此后台线程中进行任何更改,则必须切换到主线程。通过写下面的块。
dispatch_async(dispatch_get_main_queue()) {
// Your code for UI Changes.
}
编辑:Swift 3
DispatchQueue.main.async {
}
答案 1 :(得分:2)
Grand Central Dispatch(GDC)模式中最常见的任务之一是在全局后台队列上执行工作,并在工作完成后立即更新主队列上的UI。新API如下所示:
DispatchQueue.global(attributes: [.qosDefault]).async {
// Background thread
DispatchQueue.main.async(execute: {
// UI Updates
})
}
队列现在在init上获取属性。这是一个Swift选项集,可以包括队列选项,如串行和并发,内存和活动管理选项以及服务质量(.default,.userInteractive,.userInitiated,.utility和.background)。
新变化:
如果您想了解更多信息,这是一个很好的谈话https://developer.apple.com/videos/play/wwdc2016/720/