在Swift 3中,DispatchQueue
完成一项任务时不需要完成处理程序。此外,您可以通过不同的方式实现目标
一种方法是:
var a: Int?
let queue = DispatchQueue(label: "com.app.queue")
queue.sync {
for i in 0..<10 {
print("Ⓜ️" , i)
a = i
}
}
print("After Queue \(a)")
它将等待直到循环结束,但是在这种情况下,您的主线程将阻塞。
您还可以执行以下相同操作:
let myGroup = DispatchGroup()
myGroup.enter()
//// Do your task
myGroup.leave() //// When your task completes
myGroup.notify(queue: DispatchQueue.main) {
////// do your remaining work
}
最后一件事:如果要在使用DispatchQueue完成任务时使用completionHandler,则可以使用DispatchWorkItem
。
这是一个示例如何使用DispatchWorkItem
:
let workItem = DispatchWorkItem {
// Do something
}
let queue = DispatchQueue.global()
queue.async {
workItem.perform()
}
workItem.notify(queue: DispatchQueue.main) {
// Here you can notify you Main thread
}