未调用[NSThread cancel]后的代码

时间:2016-08-10 14:59:21

标签: ios objective-c multithreading nsthread

我有一个NSThread类型的实例变量:

NSThread *workerThread;

在一个函数中,我实例化了这个NSThread变量&开始吧:

-(void)startTask {
  workerThread = [[NSThread alloc] initWithTarget:self
                                                    selector:@selector(doWork)
                                                      object:nil];
  [workerThread start];
}

doWork正在执行长时间运行的任务。)

在另一个功能中,我尝试完成任务&停止/杀死工人线程&做其他事

-(void) stopTask {
 // stop long running task
 [self stopWork]
 NSLog(@"I can see this log");
 [workerThread cancel];

 // code never reach here
 [self doSomethingElse];
}

我遇到的问题是在我启动工作线程后,当我调用stopTask时,[self doSomethingElse]永远不会被调用。

为什么呢?如何摆脱这个问题?

0 个答案:

没有答案