首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS: dispatch_async( dispatch_get_main_queue())

iOS: dispatch_async( dispatch_get_main_queue())
EN

Stack Overflow用户
提问于 2016-10-06 11:12:53
回答 1查看 1.5K关注 0票数 1

请原谅初学者的问题。我正在学习一个教程,它有下面的片段。我不明白dispatch_async的意义,如果您通过调用dispatch_get_main_queue()主线程上的主队列。上执行块self.webView...,为什么要把它放在dispatch_async中呢?

谢谢

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-06 11:24:00

dispatch_async用于在另一个队列上执行块。它需要两个参数,首先是它应该在其中执行的队列,其次是代码块。

代码语言:javascript
复制
NSURLSession.sharedSession().dataTaskWithURL(url!){...}

他们在代码中使用dispatch_async的原因是,...代码块将在其他队列中执行(而不是在主队列中)。

因此,如果要在主队列中执行self.webView.loadHTMLString(urlContent!, baseURL: nil),则必须使用dispatch_async(dispatch_get_main_queue()){...}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39894466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档