2009-07-13 70 views
1

我有一个iphone应用程序,它运行一些线程来计算搜索。搜索是从库中调用一个耗时的函数。当应用程序终止时NSThread退出

我需要退出线程,当应用程序正在终止,否则线程继续运行和搜索创建问题,当我重新打开应用程序。

我试图在线程

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mainApplicationWillTerminate) name:@"UIApplicationWillTerminateNotification" object:nil]; 

而且在mainApplicationWillTerminate

-(void)mainApplicationWillTerminate; 
{ 
    [NSThread exit]; 
} 

问题认购依然存在,任何想法?

回答

1

正如文档中所述,您应该避免使用[NSThread退出]。一般来说,为避免内存泄漏和其他灾难,线程永远不应该从“外部”停止。线程应该总是自己退出

在你的线程主循环,你应该检查,如果线程被取消:

if ([[NSthread currentThread] isCancelled]) { 
    return; 
} 

要取消它,你从另一个线程调用其“取消”的方法。

在您的情况,您应该设置一个应用程序代理(见UIApplicationDelegate

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
    [myThread cancel]; 
} 

更好看看尼斯NSOperation类也。

+0

在右侧缺少“]” if语句 – 2009-07-13 09:59:53

相关问题