重い処理のほかに、UIの応答性が低い場合は、主にマルチスレッドを使用する必要がありますか?または他の考慮事項がありますか?アプリケーションにマルチスレッドが必要かどうかをどのように知ることができますか?
3 に答える
iOSでのスレッドの重要なアプリケーションの1つは、ネットワーク通信中です。アプリ全体がサーバーとの通信であり、UR UIでビジービューを表示する場合は、このようなシナリオでスレッドを作成して、バックグラウンドスレッドでネットワーク通信を実行する必要があります。
IOS 5では、スレッドの代わりにGCD(Grand Central Dispatch)を選択して、同じ機能を実行できます。
基本的にiOS
開発中は、完了までに時間がかかるのThreads
影響を避けたい場合に使用されます。たとえば、xml、json、画像データなどを解析するために を作成する場合、その時点でユーザーを停止したくない場合は、を使用できます。UI
process
connection
interaction
threads
を使用してスレッドを開始できますNSThread
。
スレッドを使用する前に考慮すべきこと -
- スレッド内でグラフィカルな変更を行うべきではありません。スレッドでそれが必要な場合は
、でのみ実行できますmain thread
。 - 実行前に完了する可能性があり、タイマーが実行されない可能性があるため
NSTimer
、セカンダリで a を使用しない でください。thread
thread
timer
長時間実行したいときはいつでもprocess
使用できますthread
。
iOS でのスレッド化の使用は、エンドユーザーによる手間のかからないシームレスなエクスペリエンスを保証することです。解析やデータ取得など、ネットワーク経由でリソースを抽出したいときはいつでもスレッドを実装できます。また、アプリケーションがメイン スレッドで実行され、Web 操作がカスタム スレッドで実行されるため、UI が影響を受けないようにする必要があります。
同時操作が必要な場合、またはゲーム内で同じオブジェクトに複数のアニメーションを同時に使用する必要がある場合などに、スレッドを使用することをお勧めします。
Appleによる同時実行プログラミングガイドを読むことができます
およびスレッド管理
ただし、スレッドはメモリ割り当てが必要なためアプリケーションのオーバーヘッドになる可能性があり、スレッドでの大規模な操作はパフォーマンスに影響を与える可能性があるため、回避できない場合に使用します。
NSThread,NSOperations を使用してスレッドを作成できます。GCD は現在非推奨です。