私は、誰かが複数のUI要素を非同期でどのように読み込むのだろうと思っていました。私の場合、UIViewController
にはUISegmentControl
があります。各セグメントには異なるUIアスペクトが読み込まれます。例えばseg1
について
私はUIViewController
を示す前に、すべてのUI要素をロードする場合、顕著な遅れがある等一つの画像、seg2
番組や画像とテキスト、即座に非同期に複数のビューをロードする
を示しています。ですから、私はseg2...n
を非同期的にロードして、UIの応答性を高めたいと考えています。
は、私は、バックグラウンドでロードする各seg
について
DispatchQueue.main.async {
// load UI
}
を経由して、すべてをロードする必要がありますか?または、これらの要素を別のスレッドにロードして、メインスレッドを使用しないでください。あなたはバックグラウンドスレッドのUIを更新するはずではないことは知っています...しかし、非同期コードを使用するとメインスレッドを使用してUIをブロックしますか?
"DispatchQueue.main.asyn"を呼び出すだけで、そのクロージャーがキューの最後まで整列されます。長い実行中/不定長の操作がある場合でも、GUIはブロックされます。あなたは単にそれを行うのに数ミリ秒も待っています。 余分な時間の真の原因であるさまざまなリソースをバックグラウンドスレッドで処理することはできませんか? QOS(サービス品質を高く評価する)を設定してみてください。 – BonanzaDriver
ああそうです。プロファイラを使用して実際に何が時間がかかるかを確認し、バックグラウンドで実行しますか? – uti0mnia