2011-10-12 146 views
1

我在我的應用程序中創建了一個NSTimer,每隔1分鐘就會觸發一次。我的問題是,當我把應用程序放在後臺,並在一段時間後說5分鐘,我把它在前臺,計時器對象變得殭屍。NSTimer越來越殭屍

對此有任何想法。

回答

0

當應用程序進入後臺時,可能會使計時器無效,然後在應用程序進入前臺時再次啓動計時器。

像這樣:計劃時

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    [myTimer invalidate]; 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    myTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(TimerFunction) userInfo:nil repeats:YES]; 
} 
+0

我有一些任務要做,所以我不能停止計時器 – JiteshW

0

NSTimer對象被保留。你的計時器可能由於某種原因失效,並因此被釋放。

+0

我只有在我回到前臺時才使計時器失效。我通過日誌確認。當我進入前臺並且當我調用[myTimer invalidate]時,該對象變得殭屍;它會崩潰。 – JiteshW

+0

在 - [NSTimer invalidate]中添加斷點以查看是否有其他人正在使您的計時器失效。計劃的計時器保持正確。除非你在其他地方過度釋放它。使用儀器的對象分配工具來查找定時器的釋放位置。 –

+0

感謝您的幫助。由於一個分離線程計時器失效了兩次,目前在我的代碼中添加了一個bool,到目前爲止它的工作。 – JiteshW