2011-12-23 66 views
0

我有一個程序,在這個程序中我想編寫一個定時器來檢查用戶是否閒置。爲此,我寫了以下代碼:NSTimer沒有運行

if (!idleTimer) { 
     NSLog(@"make"); 
     idleTimer=[[NSTimer alloc]initWithFireDate:[NSDate dateWithTimeIntervalSinceNow:10.0]interval:10 target:self selector:@selector(idleTimerExceeded) userInfo:nil repeats:NO]; 
     NSLog(@"madetimer with: %f, %@", idleTimer.timeInterval, idleTimer.fireDate); 
}else { 
     NSLog(@"no reset timer: %f", idleTimer.timeInterval); 
     if (fabs([idleTimer.fireDate timeIntervalSinceNow]) < 9) { 
     NSLog(@"reset"); 
     [idleTimer setFireDate:[NSDate dateWithTimeIntervalSinceNow:10]]; 
    } 
} 

但是不知何故,我的日誌顯示間隔始終爲0.0000。這意味着這裏有什麼不對。有誰能夠幫助我?

回答

1

我從來沒有見過一個計時器看起來如此複雜。試試這個:

寫檢查,如果用戶處於空閒狀態的方法(可以說idleChecker)

然後進行定時器可重複和可調用這個方法idleChecker

[NSTimer scheduledTimerWithTimeInterval:.5 target:self selector:@selector(idleChecker) userInfo:nil repeats:YES]; 

記得申報idleChecker方法.h文件

請注意,如果ü要停止計時器事件,那麼你需要保持它

NSTimer aTimer = [NSTimer scheduledTimerWithTimeInterval:.5 target:self selector:@selector(idleChecker) userInfo:nil repeats:YES]; 
0參考

然後停止它

[aTimer invalidate]; 

,作爲檢查,如果它的運行我只想在那裏,說明像「檢查空閒用戶」

+0

事情堅持一個NSLog的消息是:這是方法檢查如果用戶閒置或沒有。一旦(UIResponder *)nextResponder方法被執行,這個方法就會被調用,然後或者如果還沒有新的定時器,或者檢查用戶是否閒置超過9秒。如果是這樣,那麼另一個方法就會被執行。 – iJatrat 2011-12-23 20:41:07

+0

雖然我會分開它。只需在您調用此功能的同一時刻安排定時器。 – 2011-12-23 20:43:56