NSDatePicker, NSTimer с initWithFireDate: срабатывает, если я выбрал дату / время в прошлом - PullRequest
0 голосов
/ 23 ноября 2011

Не уверен, что мне нужно вставить какой-либо код для объяснения этого, и, вероятно, я упустил что-то простое, но я сразу же увижу мой NSTimer с initWithFireDate:, если выберу время в прошлом. Скорее всего, это ожидаемое поведение, но не может найти упоминания в Ссылке на класс для NSTimer.

Спасибо! * * 1004

СБН.

1 Ответ

1 голос
/ 23 ноября 2011

Это не , что явно, но [1] упоминает

"Таймер не является механизмом реального времени; он срабатывает только тогда, когда один из режимов цикла выполнения, к которомудобавленный таймер работает и может проверить, прошло ли время срабатывания таймера. Из-за различных входных источников, которыми управляет типичный цикл выполнения, эффективное разрешение временного интервала для таймера ограничено порядка 50-100 миллисекунд. Если время срабатывания таймера происходит во время длинного вызова или когда цикл выполнения находится в режиме, который не контролирует таймер, таймер не срабатывает, пока в следующий раз цикл выполнения не проверяет таймер. "

Из повторного упоминания времени срабатывания , которое может произойти во время длинного вызова, я бы заключил, что каждый таймер имеет время срабатывания, установленное прямо или косвенно, используяинтервал.Затем цикл выполнения проверяет, истекло ли какое-либо из времени срабатывания, и если да, то запускает это время, повторяет расписание и т. Д., Что приведет к наблюдаемому вами поведению.

[1] http://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/NSTimer_Class/Reference/NSTimer.html

...