NSTimer не работает - PullRequest
       3

NSTimer не работает

0 голосов
/ 24 декабря 2011

У меня есть программа, в которой я хочу закодировать таймер, который проверяет, простаивает ли пользователь или нет.Для этого я написал следующий код:

    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 Ответ

1 голос
/ 24 декабря 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...