Objective-C Language
NSTimer
Поиск…
Создание таймера
Это создаст таймер, чтобы вызвать метод 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"]);
}