2

バックグラウンド スレッドからいくつかの手順を実行し、それぞれの完了時にビューを更新しています。

[self performSelectorOnMainThread:@selector(updateProgress) withObject:nil waitUntilDone:NO];

問題は、ユーザーがこのビューを閉じた場合です。バックグラウンド スレッドは引き続き実行され、これらのアクションのいずれかに到達するとアプリがクラッシュします。スレッドがなくなったかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

1

updateProgressメインスレッドまたはバックグラウンドスレッドでメソッドを実行するつもりですか? これはチェックするための簡単なトリックです。完全な証明のために、NSOperationQueue代わりに使用する必要がありますperformSelector

BOOLこれをviewControllerで合成します

BOOL isBackgroundThreadStop;

NO関連する場所に初期化する

self.isBackgroundThreadStop = NO;

ユーザーがボタンを押したときにビューを閉じる:

-(void)dismissView
{   
    self.isBackgroundThreadStop = YES;
    [self dismissModalViewControllerWhatEver];
}

だからあなたの方法で

-(void)updateProgress
{
    if(!self.isBackgroundThreadStop){
    //run program if background thread not stop
    //it won't run if isBackgroundThreadStop is set to YES
    }
}
于 2013-02-21T12:19:35.013 に答える