ビューコントローラを表示したり、スグリでセグを実行した場合は、DispatchQueue.main.async {}
でコールするか、それが問題です。私の問題は、私がバックグラウンドスレッドまたはメインスレッドで実行する必要があります。データベースからデータをロードする場合は、ビューをDispatchQueue.main.async {}
に表示するか、バックグラウンドスレッドで実行する必要があります。メインスレッドで実行
0
A
答えて
0
メインスレッドに関するすべてのUI関連の移行、変更、および更新を呼び出す必要があります。しかし、どこでDispatchQueue.main.async {}
を使うべきですか?
バックグラウンドスレッドから呼び出しを行う場合に使用します。たとえば、データをダウンロードしてAPIから解析する場合は、通常はバックグラウンドスレッドで行います。完了したら、UIの移行や更新が必要な場合があります。そのため、更新はメインスレッドで行われます。バックグラウンドスレッドである場合、UIの変更を行うにはDispatchQueue.main.async {}
が必要です。
0
すべてのUI作業はメインスレッドで行われる必要があります。バックグラウンドキューにいなければ、メインキューにディスパッチする必要はありません。一般的な場合、セグは、主スレッド上に既に存在するユーザインタラクション(例えば、ボタン押下)からトリガされる。
表示されているビューのデータのロードに時間がかかる場合は、バックグラウンド・キューに非同期でディスパッチしてロードし、データのロードが完了したらメイン・キューに戻すことができます。
これは非同期なので、データのロードが完了した時点からのデータが表示されないことを意味します。これはあなたのUIで扱わなければならないものです。アプリケーションによっては、データがロードされている間にロードインジケータが表示される場合があります。もう1つは、最小量のデータをフェッチまたは渡して、大量のデータを非同期に表示およびロードすることです。
関連する問題
- 1. メインスレッドで実行フロー
- 2. メインスレッドでコールバックを実行
- 3. メインスレッドのカスタムメソッドの実行
- 4. メインスレッド上で再試行メカニズムを実装
- 5. NSTimerとメインスレッドでセレクタを実行する
- 6. Python:メインスレッドを継続的に実行中、バックグラウンドで実行中
- 7. ポスト(Runnable r)とメインスレッドのハンドラとの違いとメインスレッドでの実行
- 8. 長時間実行中の操作がメインスレッドで実行されています
- 9. 別のスレッドからメインスレッドでメソッドを実行できますか?
- 10. invokeLaterがメインスレッドで実行されるのはなぜですか?
- 11. なぜCompletableFutureのthenAccept()がメインスレッドで実行されていない
- 12. std :: threadのメインスレッドでコールバック関数を実行する
- 13. すぐにメインスレッドでクロージャが実行されない
- 14. メインスレッドでasyncを実行するメソッドをテストするには?
- 15. 他のスレッドのメインスレッドでメソッドを実行する
- 16. COMオブジェクトのメソッドをメインスレッドではなく実行する方法
- 17. uikitメソッドはメインスレッド上で実行されますか?
- 18. startActivityはメインスレッドで実行する必要がありますか?
- 19. メインスレッドでコードを強制的に実行する
- 20. iOSプッシュ通知 - アプリケーション:didRegisterForRemoteNotificationsWithDeviceToken:メインスレッドで実行しますか?
- 21. ワーカースレッドからメインスレッドでコードを実行する
- 22. メインスレッドでNSOperationを実行しています
- 23. スレッドは自分自身とメインスレッドで実行シーケンス
- 24. 時間の経過後にメインスレッドで実行
- 25. FirebaseのsignInWithEmail関数はメインスレッドで実行されますか?
- 26. メインスレッドでは何が実行されていませんか?
- 27. メインスレッドで[NSRunLoop runMode:beforeDate:]を呼び出すと、メインスレッドで実行されているNSOperationsが待ち受けになる
- 28. 実行者がメインスレッド内からスレッドを実行していない
- 29. グローバルキュー上のdispatch_asyncで実行されるブロックをメインスレッド上で実行することは可能ですか?
- 30. 私はメインスレッドでalloc()を実行し、別のスレッドでfree()を実行できますか?