Установите NSTimer для запуска один раз в будущем

#iphone #objective-c #ios #nstimer

#iPhone #objective-c #iOS #nstimer

Вопрос:

Как мне настроить NSTimer для запуска один раз в будущем (скажем, через 30 секунд). До сих пор мне удалось настроить его только так, чтобы он срабатывал немедленно, а затем с интервалами.

Ответ №1:

Метод, который вы хотите использовать, это:

   (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval) seconds target:(id) target selector:(SEL) aSelector userInfo:(id) userInfo repeats:(BOOL) repeats
  

с repeats == NO аргументами и seconds == 30 . Это создаст таймер и запланирует его. Он будет запускаться только один раз, через 30 секунд (и не сразу).

Ответ №2:

Вы можете установить таймер с вашей будущей датой и установить повторы на НЕТ

   (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval) seconds
                                     target:(id) target
                                   selector:(SEL) aSelector
                                   userInfo:(id) userInfo
                                    repeats:(BOOL) repeats
  

Ответ №3:

Используйте этот метод класса для планирования таймера.

   (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)seconds
    target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo
    repeats:(BOOL)repeats
  

Параметры
секунд
Количество секунд между срабатываниями таймера. Если количество секунд меньше или равно 0.0, этот метод вместо этого выбирает неотрицательное значение 0,1 миллисекунды.
цель
Объект, на который будет отправлено сообщение, указанное aSelector при срабатывании таймера. Целевой объект сохраняется таймером и освобождается, когда таймер становится недействительным.
aSelector
Сообщение, которое нужно отправить цели при срабатывании таймера. Селектор должен иметь следующую подпись:
— (void)timerFireMethod:(NSTimer *)Таймер
Таймер передает себя в качестве аргумента этому методу.
Пользовательская информация
Информация о пользователе для таймера. Указанный вами объект сохраняется таймером и освобождается, когда таймер становится недействительным. Этот параметр может быть равен нулю.
повторяется
Если ДА, таймер будет повторно перепланировать себя, пока не станет недействительным. Если НЕТ, таймер будет признан недействительным после его срабатывания.
Пример

     [NSTimer scheduledTimerWithTimeInterval:2.0
             target:self
             selector:@selector(targetMethod:)
             userInfo:[self userInfo]
             repeats:NO];
  

Таймер автоматически запускается циклом выполнения через 2 секунды. Темы программирования таймера