2011-12-23 9 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

Ive никогда не видел таймер выглядят настолько сложными. попробуйте это:

написать метод, который проверяет, если пользователь находится в режиме ожидания (позволяет сказать 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]; 

затем, чтобы остановить его

[aTimer invalidate]; 

, как для проверки, если его ход я бы просто воткнуть NSLog сообщение там о том, что-то вроде «проверить на холостом ходу пользователя»

+0

Дело в том: Это проверка метод если пользователь простаивает или нет. Как только будет запущен метод nextResponder (UIResponder *), этот метод получает вызов, который затем либо создает новый таймер, если он еще не существует, либо проверяет, не простаивает ли пользователь более 9 секунд. Если это так, выполняется другой метод. – iJatrat

+0

я бы разделить его. и просто планируйте таймер в той же точке, что и вы. –

Смежные вопросы