2012-01-06 9 views
2

私はconnectionDidFinishLoading時にスレッドが起動しているアプリケーションを開発しています。スレッドを止めるにはどうすればいいですか?

- (void)connectionDidFinishLoading:(NSURLConnection *)connection { 
    [downloadingthread cancel]; 
    downloadingthread = [[NSThread alloc]initWithTarget:self selector:@selector(startusingthread) object:nil]; 
    [downloadingthread start]; 
} 

connectionDidFinishLoadingが複数回呼び出されるため、ダウンロードスレッドを停止してからもう一度開始します。最後のスレッドのみを実行しようとしています。間にスレッドを止めるのを助けてください。

答えて

0

強制的にスレッドを停止しないでください。

-[NSURLConnection cancel]を使用して要求を停止します。

あなたのスレッドは実行ループ上にある必要があります。要求を中止する場合はそのスレッドの実行ループをキャンセルしますが...場所全体にスレッドを作成するのは非常にコストがかかります。この問題の代わりに

+0

あなたの恩人に感謝しますが、スレッドで遊ぶことができれば私たちはiPhoneの多くのことをやり遂げることができると考えています。私たちのアプリケーションはiPhoneのスレッドの1つのタイプです。最終的にメインスレッドは中間に停止します。その間にスレッドを停止することもできます。 – Nit

+0

'stop-in-between'によって、スレッドの実行ループを参照していると思います。実行ループが実行され、休止してから、指定された時間間隔で再開します。実行ループを停止するように伝えるのは安全です。私は答えて言いました。実行ループを停止するのは即時(強制的に)ではなく、スレッドがアイドル状態に入るか、アイドル状態から出るまで待機します。タイマーをインストールし、実行ループによって実行されるメッセージを送信することができます。これは良い、安全なアプローチです。 – justin

関連する問題