#swift2
#swift2
Вопрос:
Простите меня за вопрос новичка. Я следую руководству, в нем есть следующий фрагмент. Я не понимаю смысла dispatch_async
, если вы все равно выполняете блок self.webView...
в основной очереди в основном потоке, вызывая dispatch_get_main_queue()
его, зачем беспокоиться о том, чтобы поместить его внутрь 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()
Ответ №1:
dispatch_async
используется для выполнения блока в другой очереди. Для этого требуется 2 параметра: первый — очередь, в которой он должен выполняться, второй — блок кода.
NSURLSession.sharedSession().dataTaskWithURL(url!){...}
Причина, по которой они используют dispatch_async в вашем коде, заключается в том, что блок ...
кода будет выполняться в другой очереди (не в основной очереди).
Итак, если вы хотите выполнить self.webView.loadHTMLString(urlContent!, baseURL: nil)
в основной очереди, тогда вам нужно использовать dispatch_async(dispatch_get_main_queue()){...}
.