スレッドの実行を停止する正しい方法は、実行を停止するようにうまくやってみることです。あなたのスレッドでは、そのような要求を聞き、適切なタイミングで従います。
Appleのスレッドプログラミングガイドによると:
Cocoa、POSIX、およびMultiprocessing Servicesはスレッドを直接殺すためのルーチンを提供していますが、このようなルーチンの使用はお勧めしません。スレッドを強制終了すると、そのスレッドはそれ以降にクリーンアップされません。スレッドによって割り当てられたメモリがリークする可能性があり、スレッドが現在使用している他のリソースが適切にクリーンアップされない可能性があり、後で問題が発生する可能性があります。
操作の途中でスレッドを終了する必要がある場合は、キャンセルまたは終了メッセージに応答するようにスレッドを最初から設計する必要があります。長時間実行する操作では、定期的に作業を停止し、そのようなメッセージが到着したかどうかを確認することを意味します。スレッドが終了するように求めるメッセージが表示された場合、スレッドは必要なクリーンアップを実行して正常に終了する機会を得ます。それ以外の場合は、次のデータのまとまりを処理して処理するだけです。
スレッド内で [NSThread exit];
を使用するか、現在のスレッドをキャンセルするか、
または [NSThread cancel]
メソッドを使用してください。