1
只是想上的最佳實踐一些澄清,以使SWIFT網絡API調用2.斯威夫特 - 網絡請求和後臺排隊
這裏是我的典型的網絡請求的樣子下載JSON數據:
let session = NSURLSession(configuration: .defaultSessionConfiguration())
let url = NSURL(string: my_url_string)
let request = NSURLRequest(URL: url)
let dataTask = session.dataTaskWithRequest(request) { data, response, error in
do {
self.tableData = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! [NSDictionary]
dispatch_async(dispatch_get_main_queue(), {() -> Void in
self.tableView.reloadData()
})
} catch let error {
print(error)
}
}
dataTask.resume()
我的問題是:我應該把所有這個代碼塊包裝到背景隊列中嗎?我應該做如下:
let download_queue = dispatch_queue_create("download", nil)
dispatch_async(download_queue) {() -> Void in
previous code here
}
或者我應該使用指定的高優先級隊列,如之一:
dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0)
而且,使得在隨後的視圖控制器額外的網絡請求的時候,我應該使用我在這裏使用相同的隊列還是應該創建一個新隊列?
由於沒有明顯的問題!所以你說我不需要改變我的原始代碼?這是好的嗎? – JK140
據我所知,沒有必要使用額外的GCD塊。但完全沒問題。 –