我正在从后台线程执行几个步骤,使用以下内容更新每个完成时的视图:
[self performSelectorOnMainThread:@selector(updateProgress) withObject:nil waitUntilDone:NO];
问题是用户是否驳回此视图。后台线程继续运行,并在应用程序执行其中一个操作时崩溃。如何判断线程是否已经消失?
答案 0 :(得分:1)
您是否打算在主线程或后台线程中运行方法updateProgress
?这是检查的简单技巧。要获得完整的证明,您应该使用NSOperationQueue
代替performSelector
在viewController中合成此BOOL
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
}
}