2017-04-26 13 views
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) 

、その後のビューコントローラの追加のネットワーク要求を行うときに、私が使用する必要がありますが、次のように私が行う必要がありますここで使用するキューと同じキュー、または新しいキューを作成する必要がありますか?

答えて

0

デフォルトでは、NSURLSession APIは非常に非同期です。 Apple docsからの有用な情報

そんなにUITableview

+0

感謝を更新するGCDの利用権利があるので、バックグラウンドスレッドでGCDとも完了ブロックを実行しますしているコードブロックをラップすることを示している目に見える問題ありません!だから私の元のコードを変更する必要はありませんあなたの言葉?それは良いですか? – JK140

+0

私が見る限り、追加のGCDブロックを使う必要はありません。しかし、それは大丈夫です。 –

関連する問題