NSDatePicker, NSTimer с initWithFireDate: срабатывает, если я выбрал дату / время в прошлом
Не уверен, что мне нужно вставить какой-либо код, чтобы объяснить это, и это, вероятно, что-то простое, что я упустил из виду, но я вижу свой NSTimer с initWithFireDate:
стрелять сразу, если я выберу время в прошлом. Это, скорее всего, ожидаемое поведение, но не может найти упоминания в Ссылке на класс для NSTimer.
Спасибо!
Совет Безопасности ООН
1 ответ
Это не так явно, но упоминает [1]
"Таймер не является механизмом реального времени; он срабатывает только тогда, когда работает один из режимов цикла выполнения, к которому был добавлен таймер, и может проверить, прошло ли время срабатывания таймера. Из-за различных источников входного сигнала типичный Управляет циклом выполнения, эффективное разрешение временного интервала для таймера ограничивается порядка 50-100 миллисекунд. Если время срабатывания таймера происходит во время длинного вызова или когда цикл выполнения находится в режиме, который не контролирует таймер, таймер не срабатывает, пока в следующий раз цикл выполнения не проверяет таймер. "
Из повторного упоминания времени срабатывания, которое может произойти во время длинного вызова, я бы заключил, что каждый таймер имеет время срабатывания, установленное прямо или косвенно с использованием интервала. Затем цикл выполнения проверяет, не истекло ли какое-либо время срабатывания, и если да, запускает это время, повторяет ли расписание и т. Д., Что приведет к поведению, которое вы наблюдали.