Поиск…


Создание таймера

Это создаст таймер, чтобы вызвать метод doSomething для self через 5.0 секунд.

[NSTimer scheduledTimerWithTimeInterval:5.0
         target:self 
         selector:@selector(doSomething) 
         userInfo:nil 
         repeats:NO];

Установка параметра repeats в значение false/NO означает, что мы хотим, чтобы таймер срабатывал только один раз. Если мы установим значение true/YES , оно будет срабатывать каждые пять секунд, пока оно не будет отменено вручную.

Недействительный таймер

[timer invalidate];
timer = nil;

Это остановит таймер от срабатывания. Должен быть вызван из потока, в который был создан таймер, см . Примечания Apple :

Вы должны отправить это сообщение из потока, на котором был установлен таймер. Если вы отправляете это сообщение из другого потока, источник входного сигнала, связанный с таймером, не может быть удален из цикла запуска, что может помешать правильному выводу потока.

Настройка nil поможет вам проверить, работает ли она или нет.

if(timer) {
    [timer invalidate];
    timer = nil;
}

//Now set a timer again.

Ручное включение таймера

[timer fire];

Вызов метода fire заставляет NSTimer выполнять задачу, которую он обычно выполнял по расписанию.

В неповторяющемся таймере это автоматически отключит таймер. То есть, вызов fire до того, как временной интервал будет завершен, приведет только к одному вызову.

В повторяющемся таймере это просто вызовет действие без прерывания обычного графика.

Сохранение информации в таймере

При создании таймера вы можете установить параметр userInfo для включения информации, которую вы хотите передать функции, которую вы вызываете с помощью таймера.

Принимая таймер в качестве параметра в указанной функции, вы можете получить доступ к свойству userInfo .

NSDictionary *dictionary = @{
                             @"Message" : @"Hello, world!"
                            }; //this dictionary contains a message
[NSTimer scheduledTimerWithTimeInterval:5.0
     target:self 
     selector:@selector(doSomething) 
     userInfo:dictionary
     repeats:NO]; //the timer contains the dictionary and later calls the function

...

- (void) doSomething:(NSTimer*)timer{
    //the function retrieves the message from the timer
    NSLog("%@", timer.userInfo["Message"]);
}


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow