2016-09-17 94 views
1

请帮我这条线转换为SWIFT 3.0:队列和斯威夫特3问题

dispatch_async(DispatchQueue.global(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0)) 

又是什么恰恰意味着?像这样:在主队列中的括号内执行代码?

在此先感谢。

ps。这行代码是从apple's code采取核心数据进行工作

回答

7

在斯威夫特3你可以像这样

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

} 

写它的意思是每个支架之间写的代码将在后台执行。如果你想在这个后台线程中做任何修改,你必须切换到主线程。通过编写下面的块。

dispatch_async(dispatch_get_main_queue()) { 
    // Your code for UI Changes. 
} 

编辑:斯威夫特3

DispatchQueue.main.async { 
} 
+0

'DispatchQueue.main.async {}'或'DispatchQueue.main.sync {}'。对于主队列。 – Zico

+0

'dispatch_async(DispatchQueue.global(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0))''0'怎么办?我如何设置'0' – 2016-10-19 06:08:41

2

一个在大中央调度(GDC)模式中最常见的任务是在全球背景队列执行的工作,并尽快更新主队列中的用户界面因为工作已经完成。新的API看起来像这样:

DispatchQueue.global(attributes: [.qosDefault]).async { 
    // Background thread 
    DispatchQueue.main.async(execute: { 
     // UI Updates 
    }) 
} 

队列现在在init上获取属性。这是一个Swift optionSet,可以包含队列选项,例如串行vs并发,内存和活动管理选项以及服务质量(.default,.userInteractive,.userInitiated,.utility和.background)。

新变化:

  • DISPATCH_QUEUE_PRIORITY_HIGH: - > .userInitiated
  • DISPATCH_QUEUE_PRIORITY_DEFAULT: - > .DEFAULT
  • DISPATCH_QUEUE_PRIORITY_LOW: - > .utility
  • DISPATCH_QUEUE_PRIORITY_BACKGROUND: - >系统技术领域

如果你想了解更多,这是一个很好的谈话https://developer.apple.com/videos/play/wwdc2016/720/

+0

感谢您的帮助! –