ビューが表示されるたびに実行する必要のある長時間実行タスク(つまり、DBから複雑なデータを取得する)があります。パフォーマンス上の理由から、長時間実行されているタスクをメインスレッドから削除したいことはわかっています。また、UIに関連することを行うには、メインスレッドに戻る必要があることも知っています。私はこれを達成するための正しいGCDパターンを見つけようとしています。私がGCDドキュメントで見たものから、これは物事を行うための「正しい」方法のようですが、人々が別のパターンがより有用であると思ったかどうか興味があります。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Add long running code for off the UI thread here.
dispatch_async(dispatch_get_main_queue(), ^{
// Add UI updating code here back on the UI thread.
});
});
私は基本的に非同期で(つまり、UIスレッドをブロックしない)別のスレッドに移動し、いくつかのことを行ってから、メインスレッドに戻ってUIを更新すると言っています。