Как убить повторный таймер, когда найдены правильные результаты - PullRequest
0 голосов
/ 25 декабря 2011

У меня есть NS Timer Firing в загрузке веб-просмотра, которая ищет информацию на странице. Затем я делаю некоторые манипуляции с флажками установки страницы и т. Д., Которые вводят некоторые функции AJAX, которые, как люди могут знать, не запускают метод webviewloaded. Короче говоря, я хотел бы создать время, которое проверяет каждые 5 секунд, чтобы проверять наличие определенной части, которая происходит только при загрузке правильной информации. Это нормально, я могу это сделать, но я не знаю, как остановить NSTIMER, так как все примеры здесь не показывают параметр, передаваемый в функцию.

В настоящее время у меня есть

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

-(void) fcheckForEditFinished
{
//Would like to kill timer at this point. 
}

Спасибо, Кевин

1 Ответ

2 голосов
/ 25 декабря 2011

Документация scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: гласит:

aSelector
Сообщение для отправки на target при срабатывании таймера. селектор должен иметь следующую подпись:
- (void)timerFireMethod:(NSTimer*)theTimer
Таймер передает себя в качестве аргумента этому методу.

И вы можете «убить» таймер, отправив ему сообщение invalidate. Так что измените fcheckForEditFinished на fcheckForEditFinished: так:

- (void)fcheckForEditFinished:(NSTimer *)timer
{
    if (checkForEdit()) {
        [timer invalidate];
    }
}

Таймер автоматически передаст себя в качестве параметра fcheckForEditFinished:. Убедитесь, что вы добавили двоеточие к селектору при вызове и к scheduledTimerWithTimeInterval:....

...