2010-05-29 57 views
0

我有以下代碼:的NSTimer戳一個時間間隔問題

 
[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(timerCount:) userInfo:nil repeats:YES]; 

-(void)timerCount:(NSTimer *)timer 
{ 
    NSTimeInterval dt = [timer timeInterval]; 
    // do something 
} 

的NSTimeInterval我將是0.5,我已經把上scheduledTimerWithInterval的時間間隔,這意味着timerCount將被稱爲各0.5秒。

但我現在有一些東西作爲timeStamps,我想知道NSTimer是否會每次在PRECISELY 0.5秒內調用timerCount方法。

+1

購買原子鐘如果需要精確0.5秒區間[[請提供所需的精度]。 – kennytm 2010-05-29 15:01:09

回答

0

你不會在主線程上使用NSTimer,因爲定時器只能被事件循環調用。

如果您需要最大的精度,只需創建一個擁有自己的消息循環的線程並在那裏安排計時器。

0
aTimer = [NSTimer timerWithTimeInterval:(1.0) target:self selector:@selector(timerFired:) userInfo:nil repeats:YES]; 

     NSRunLoop *runner = [NSRunLoop currentRunLoop]; 
     [runner addTimer:aTimer forMode: NSDefaultRunLoopMode]; 


- (void)timerFired:(NSTimer*)theTimer 
{ 

    if(condition) 
    { 
     //timer terminated 
     [theTimer isinValid]; 
} 

}