Чтобы запланировать запуск таймера каждые 10 секунд, вам необходимо:
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval: 10.0
target: someObject
selector: @selector(fire:)
userInfo: someParameter
repeats: YES];
Это создаст таймер и поместит его в цикл выполнения так, чтобы он срабатывал каждые 10 секунд. Когда он запускается, это эквивалентно следующему вызову метода:
[someObject fire: someParameter];
Вам разрешено передавать nil как someParameter
, и в этом случае вашему селектору не нужно принимать параметр, т.е. это может быть -fire
вместо -fire:
.
Чтобы остановить таймер, просто отправьте ему сообщение invalidate
.
[timer invalidate];
Для работы таймеров необходим цикл запуска. Это нормально, если вы запускаете его в главном потоке вашего приложения, так как основной поток уже имеет цикл выполнения (именно он обрабатывает события пользовательского интерфейса и передает их вашим действиям). Если вы хотите, чтобы таймер срабатывал в другом потоке, вы должны создать и запустить цикл выполнения в этом другом потоке. Это немного сложнее, так что если вы новичок в Objective-C, избегайте этого пока.
Редактировать
Увидев, что вы пытаетесь сделать, первый бит кода для планирования таймера должен заменить весь цикл while. Метод -fire
будет выглядеть примерно так:
-fire
{
// code here only to determine sendgrowl value...
if(sendgrowl)
{
if (growlBundle && [growlBundle load])
{
// more code to sends growl
}
else
{
NSLog(@"ERROR: Could not load Growl.framework");
}
}
// do other stuff that doesn't matter...
}