2017-07-21 5 views
0

の場合、すべてのhttp要求はメインのUIスレッドまたはバックグラウンドスレッドで実行する必要がありますか?performFetchWithCompletionHandler httpフェッチは、メインスレッドまたはバックグラウンドスレッドで行う必要がありますか? performFetchWithCompletionHandler内の

+0

メインスレッドではこれを行わないでください。バックグラウンドスレッドでそれを行う –

+0

はい、私は理解していないものは、バックグラウンドスレッドでそれを行う目的は何ですか?私は任意のケースで結果を使用してcompletionHandlerを呼び出す必要がありますか?だから、メインスレッドで結果を待つ必要がありますか? –

答えて

1

バックグラウンドスレッドでHTTPリクエストを行う必要があります。あなたのデータソースにデータを入力するための何らかのデータを受け取った場合は、.reloadData()をメインスレッドに入れる必要があります。 documentationのこの部分はあなたのより良いを与える可能性があり

DispatchQueue.main.async { 
    tableView.reloadData() 
} 

:あなたの結果を表示するtableViewを使用している、あなたはcompletionHandler:

スウィフト3にこのコードを配置すると仮定すると

このトピックについての説明。

+0

はい、しかし、私は理解していないものは、バックグラウンドスレッドでそれを行う目的は何ですか?私は任意のケースで結果を使用してcompletionHandlerを呼び出す必要がありますか?だから、メインスレッドで結果を待つ必要がありますか? –

+0

メインスレッドの責任の1つは、UIをレンダリングすることです。通常、どのようなIO要求(HTTP要求など)もフレームレンダリング(60FPSを取得するには16.7msごとに発生する)よりも低速です。そのため、データが準備されているときにのみメインスレッドを呼び出すことができます。 – mtrevia

+0

はい、アプリがバックグラウンドのときは、何もレンダリングする必要はありません。とにかく、バックグラウンドスレッドでhttpリクエストをしたら、私はcompletionHandlerを呼び出すでしょうか? –

関連する問題