请原谅初学者的问题。我正在学习一个教程,它有下面的片段。我不明白dispatch_async的意义,如果您通过调用dispatch_get_main_queue()在主线程上的主队列。上执行块self.webView...,为什么要把它放在dispatch_async中呢?
谢谢
let url = NSURL(string: "http://www.stackoverflow.com")
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {
(data, response, error) in
if error == nil {
var urlContent = NSString(data: data, encoding: NSUTF8StringEncoding)
println(urlContent)
dispatch_async(dispatch_get_main_queue()) {
self.webView.loadHTMLString(urlContent!, baseURL: nil)
}
}
}
task.resume()发布于 2016-10-06 11:24:00
dispatch_async用于在另一个队列上执行块。它需要两个参数,首先是它应该在其中执行的队列,其次是代码块。
NSURLSession.sharedSession().dataTaskWithURL(url!){...}他们在代码中使用dispatch_async的原因是,...代码块将在其他队列中执行(而不是在主队列中)。
因此,如果要在主队列中执行self.webView.loadHTMLString(urlContent!, baseURL: nil),则必须使用dispatch_async(dispatch_get_main_queue()){...}。
https://stackoverflow.com/questions/39894466
复制相似问题