1

ビューへのすべての変更はメイン スレッドで行う必要があることは理解していますが、どのレベルの複雑さで を使用することを検討し始める必要がありdispatch_asyncますか?

次の目的で使用する必要があります: - 数値処理 (複雑な確率の計算など) - 何らかの形式の永続ストレージへの保存 - モデル オブジェクトの更新 - かさばるオブジェクトの初期化

スレッド化に関しては、iOS に慣れています。私は常に非同期のネットワーク リクエストを行いますが、それ以外はメイン スレッドで最小限のリソースを使用するようにしているため、アプリの動作が少し遅くなります。

これについて複数のソースを検索したので、同様の質問がある場合は、それを指摘して私の無知を許してください.

4

3 に答える 3

3

UI に関連していなくても、アプリの応答性に悪影響を与える可能性があるほとんどのものは、すべてタスクをバックグラウンド キューに移動する候補です。まだ慣れていないことを心配する必要はありませんが、次のリソースの一部が役立つ場合があります。

于 2013-06-06T05:03:29.963 に答える
2

非常に簡単な答え: デバイスは応答性が高くなければなりません。つまり、ユーザーの操作に可能な限り即座に反応する必要があります。したがって、数分の一秒以上かかる操作は、可能な限り別のスレッドとして実行する必要があります。
もちろん、マルチスレッドは扱いにくい場合がありますが、スレッドが適切に分離されていれば、かなり簡単です。留意すべき最も重要なことは、UIKit のほとんどのクラス、および配列などの他の多くのクラスはスレッドセーフではなく、複数のスレッドからそれらにアクセスする場合、たとえば@synchronizeブロックを使用して同期する必要があるということです。したがって、ここなどのドキュメントを注意深く読んでください。

于 2013-06-06T04:55:17.997 に答える
1

アプリをプロファイリングします。真剣に、アプリがどこで遅延するかを正確に教えてくれるものは他にありません。UILabel自分のコードで、レンダリングや文字列処理などの予期しないボトルネックが発生したことがあります。インストゥルメントがなければ、それらを最適化することさえ考えませんでした。

于 2013-06-06T05:09:53.020 に答える