我有一个iphone应用程序,它运行一些线程来计算搜索。搜索从库中调用耗时的函数。
我需要在应用程序终止时退出线程,否则线程会继续运行,并且当我重新打开应用程序时搜索会产生问题。
我试图在帖子中订阅
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mainApplicationWillTerminate) name:@"UIApplicationWillTerminateNotification" object:nil];
在mainApplicationWillTerminate
中-(void)mainApplicationWillTerminate;
{
[NSThread exit];
}
问题仍然存在,有什么想法吗?
答案 0 :(得分:1)
如文档中所述,您应该避免使用[NSThread退出]。一般来说,为了避免内存泄漏和其他灾难,线程永远不应该“从外部”停止。线程总是自行退出。
在你的线程主循环中,你应该检查线程是否被取消:
if ([[NSthread currentThread] isCancelled]) {
return;
}
要取消它,请从另一个线程调用其“取消”方法。
在您的情况下,您应该设置一个应用程序委托(参见UIApplicationDelegate)
- (void)applicationWillTerminate:(UIApplication *)application
{
[myThread cancel];
}
最好还看一下漂亮的NSOperation课程。