2017-12-05 11 views
-7
私は、APIの解析におけるスレッドで動作する方法を知りたい

は、いくつかの例タスクがSwiftで使用されるスレッドは何ですか?

DispatchQueue.global(qos: .userInitiated).async { 
    // Download file or perform expensive task 

    DispatchQueue.main.async { 
     // Update the UI 
    } 
} 
+1

問題点は何ですか?より多くの情報が必要です –

答えて

1

スレッドが必要になります場合は、バックグラウンドで、すなわち、並列にタスクを実行するために使用されているリンクしてください。彼らはしばしば、別のスレッドでネットワークコールのような低速な操作を実行するために使用され、その間にユーザはアプリケーションの使用を継続することができます。 すべてのUI呼び出しはメインキュー(DispatchQueue.main)で実行されるので、バックグラウンド非同期タスクを開始すると、クロージャ内のすべてのコードが別のキューで実行されますが、完了したらメインキューに切り替えてUIの更新。バックグラウンドタスクを実行してからメインスレッドクロージャのUIを更新すると、自分自身への弱い参照が使用されます。ユーザーがviewcontrollerから離れてクロージャーが戻ってくると、もはや存在しなくなったui要素を更新してアプリをクラッシュさせます。

DispatchQueue.global(qos: .userInitiated).async { 
// Download file or perform expensive task 

DispatchQueue.main.async { [weak self] in 
    // Update the UI 
} 
} 

最後に、これは大きなトピックであるため、誰かが答えに必要な完全な知識を与えることは期待できません。特定の問題が発生した場合は、新しい質問を作成してください。そうでない場合は、時間をかけて文書をお読みください。 https://developer.apple.com/library/content/documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html

関連する問題