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()){...}.