如何判断主线程是否已经消失?

时间:2013-02-21 12:05:18

标签: ios objective-c

我正在从后台线程执行几个步骤,使用以下内容更新每个完成时的视图:

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

问题是用户是否驳回此视图。后台线程继续运行,并在应用程序执行其中一个操作时崩溃。如何判断线程是否已经消失?

1 个答案:

答案 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
    }
}