我的应用程序中有一个主线程和一个辅助线程。众所周知,UI 正在使用主线程。我使用辅助线程来后台加载我的视图。我有一个主控制器,我称之为虚拟控制器。从那里我打电话给我的主控制器,它处于横向模式。
所以基本上我要做的是,当我旋转我的虚拟控制器时,我希望能够加载我的主景观控制器,反之亦然。
当我从虚拟旋转到主要时,一切正常。主控制器有一系列要加载的子控制器,所以我将该进程放在辅助线程上,到那时它们正在加载,我会显示一个加载器屏幕。
dummy 是一个普通的视图控制器,而 main 是一个模态视图控制器。
现在的问题。
如果用户试图旋转表单 dummy --> main,rotate 方法会启动主视图控制器的初始化。但是由于某种原因,用户改变了主意并从 main-->dummy 旋转回来,理想情况下,过渡应该是平滑的,因为 UI 线程(main theread)是免费的。会发生什么是 UI 旋转回来。但是由于主控制器上的辅助线程仍然处于开启状态,即使在主线程在 MainController 上调用了dismiss modal控制器之后,当我们调用 willRotate 函数时。
我在各种帖子中读到我们不能简单地杀死辅助线程,因为我们必须自己清理东西。那么任何人都可以指导我完成代码,我如何杀死我的辅助线程并在我转回我的调用表单之前进行清理..??它有点紧急......请不要指向其他线程主题,因为我已经访问过那些。
我特别想知道我应该如何停止我的辅助线程,而不会导致崩溃。谢谢。
-(void)viewDidLoad {
[super viewDidLoad];
workingThread = [[NSThread alloc]initWithTarget:self selector:@selector(parseMainTextFile) object:nil];
[workingThread start];
[NSThread detachNewThreadSelector:@selector(addLoader) toTarget:self withObject:nil];
//[self performSelectorOnMainThread:@selector(parseMainMatchTextFile) withObject:nil waitUntilDone:NO];
}