2016-10-06 4 views
1

初心者の方のご容赦ください。私はチュートリアルに従っています。次のスニペットがあります。 dispatch_asyncの点が分かりません。self.webView...the main queue on the main threadに実行しても、dispatch_get_main_queue()と呼んでください。なぜなら、それをdispatch_asyncに入れるのはなぜですか?
おかげiOS:dispatch_async(dispatch_get_main_queue())

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つのパラメータが必要です。最初に実行するキューがあり、2番目にコードブロックです。

NSURLSession.sharedSession().dataTaskWithURL(url!){...} 

彼らはあなたのコードでdispatch_asyncを使用する理由は、...コードブロックが(ないメインキューに)他のキューで実行されるということです。

したがって、self.webView.loadHTMLString(urlContent!, baseURL: nil)をメインキューに実行する場合は、dispatch_async(dispatch_get_main_queue()){...}を使用する必要があります。

関連する問題