【发布时间】:2015-11-05 21:52:48
【问题描述】:
我试图通过阅读来理解这一点:https://developer.apple.com/library/ios/documentation/Performance/Reference/GCD_libdispatch_Ref/
但这太令人困惑了。我知道以下代码必须对任务进行排队。我认为排队意味着等待?而且我不确定任务是什么。而且我知道它以某种方式加速了该代码中的代码的执行。尽管如此,我还是很困惑何时使用它以及为什么使用它。
dispatch_async(dispatch_get_main_queue(), { () -> Void in
})
以上代码可在这段代码中找到:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var cityTextField: UITextField!
@IBOutlet weak var resultLabel: UILabel!
@IBAction func findWeather(sender: AnyObject) {
let url = NSURL(string: "http://www.weather-forecast.com/locations/Riverside/forecasts/latest")!
let task = NSURLSession.sharedSession().dataTaskWithURL(url) { (data, response, error) -> Void in
if let urlContent = data {
let webContent = NSString(data: urlContent, encoding: NSUTF8StringEncoding)
var websiteArray = webContent!.componentsSeparatedByString("3 Day Weather Forecast Summary:</b><span class=\"read-more-small\"><span class=\"read-more-content\"> <span class=\"phrase\">")
let tempText = websiteArray[1]
websiteArray = tempText.componentsSeparatedByString("</span></span></span></p><div class=\"forecast-cont\"><div class=\"units-cont\"><a class=\"units metric active\">°C</a><a class=\"units imperial\">°")
print(websiteArray[0])
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.resultLabel.text = websiteArray[0]
})
}
}
task?.resume()
}
【问题讨论】:
标签: ios grand-central-dispatch