1
はちょうどここスウィフト2.スウィフト - ネットワーク要求と背景キュー
でネットワークAPI呼び出しを行うために、ベストプラクティスにいくつかの明確化を望んでいた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)
、その後のビューコントローラの追加のネットワーク要求を行うときに、私が使用する必要がありますが、次のように私が行う必要がありますここで使用するキューと同じキュー、または新しいキューを作成する必要がありますか?
感謝を更新する
GCD
の利用権利があるので、バックグラウンドスレッドでGCD
とも完了ブロックを実行しますしているコードブロックをラップすることを示している目に見える問題ありません!だから私の元のコードを変更する必要はありませんあなたの言葉?それは良いですか? – JK140私が見る限り、追加のGCDブロックを使う必要はありません。しかし、それは大丈夫です。 –