iOS: dispatch_async( dispatch_get_main_queue())
iOS: dispatch_async( dispatch_get_main_queue())
请原谅我的初学者问题。我正在学习一个教程,它有以下片段。
我不明白 dispatch_async
的意义,如果你通过调用 dispatch_get_main_queue()
在 the main queue on the main thread 上执行块 self.webView...
,为什么还要把它放在 dispatch_async
中?
谢谢
let url = NSURL(string: "http://www.whosebug.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()
dispatch_async
用于在另一个队列上执行块。它需要 2 个参数,第一个是它应该在其中执行的队列,第二个是代码块。
NSURLSession.sharedSession().dataTaskWithURL(url!){...}
他们在你的代码中使用dispatch_async的原因是...
代码块将在其他队列中执行(而不是在主队列中)。
所以如果要在主队列中执行self.webView.loadHTMLString(urlContent!, baseURL: nil)
,那么就得用dispatch_async(dispatch_get_main_queue()){...}
.
请原谅我的初学者问题。我正在学习一个教程,它有以下片段。
我不明白 dispatch_async
的意义,如果你通过调用 dispatch_get_main_queue()
在 the main queue on the main thread 上执行块 self.webView...
,为什么还要把它放在 dispatch_async
中?
谢谢
let url = NSURL(string: "http://www.whosebug.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()
dispatch_async
用于在另一个队列上执行块。它需要 2 个参数,第一个是它应该在其中执行的队列,第二个是代码块。
NSURLSession.sharedSession().dataTaskWithURL(url!){...}
他们在你的代码中使用dispatch_async的原因是...
代码块将在其他队列中执行(而不是在主队列中)。
所以如果要在主队列中执行self.webView.loadHTMLString(urlContent!, baseURL: nil)
,那么就得用dispatch_async(dispatch_get_main_queue()){...}
.