Brak daty pożaru NSTimer, gdy zegar jest ręcznie przestawiany do przodu

Ustawiam zegar, aby w przyszłości uruchomić określoną funkcję, taką jak ta:

pingTimer = [[NSTimer alloc] initWithFireDate:pingAtDate
                                     interval:0
                                       target:self
                                     selector:@selector(ping:)
                                     userInfo:nil
                                      repeats:NO];

[[NSRunLoop currentRunLoop] addTimer:pingTimer forMode:NSDefaultRunLoopMode];

Data ta przypada w przybliżeniu na 1 tydzień w przyszłości, więc do celów testowych I (i inni) ustawiamy zegar systemowy o 8 dni do przodu, aby upewnić się, że wystąpi określone zdarzenie. Problem polega na tym, że tak się nie dzieje.

Planując kilka minut w przyszłości, zauważyłem, że timer nadal się wyłącza, ale wydaje się, że wyłącza się po określonej liczbie minut. Powiedzmy, że zaplanowałem czas na datę 5 minut w przyszłości, a następnie przestawię zegar o 1 godzinę do przodu, zegar faktycznie wystrzeliwuje 5 minut później, ale ponieważ przestawiłem zegar o 1 godzinę do przodu, czas jego wystrzelenia nie wyrównuje się z czasem, w którym zaplanowano wystrzelenie.

To nie jest to, czego mógłbym się spodziewać, ponieważ nazywam „initWithFireDate”.

Chociaż wszystko to wydaje mi się niewłaściwe (i może być interesującą obserwacją dla innych), pytanie brzmi, w jaki sposób mogę się upewnić, że timer wystrzeliwuje, gdy tylko zauważy, że jego data pożaru przypada w przeszłości (tj. Jak zapewnić, że moja timer będzie strzelał, gdy ktoś poruszy zegar po zaplanowanej dacie strzelania).

questionAnswers(1)

yourAnswerToTheQuestion