我有一个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]
永远不会被调用。
为什么呢?如何摆脱这个问题?