2009-07-13 69 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

相關問題