Звучит так, будто вы ищете механизм реального времени. Даже NSTimer - даже если вы можете заставить таймер запускаться ровно на минутной границе - не являются «реальным временем», они все еще только приблизительны.
Из NSTimer Doco:
Таймер не является механизмом реального времени; он срабатывает только тогда, когда работает один из режимов цикла выполнения, к которому был добавлен таймер, и может проверить, прошло ли время срабатывания таймера. Из-за различных входных источников, которыми управляет типичный цикл выполнения, эффективное разрешение временного интервала для таймера ограничено порядка 50-100 миллисекунд.
Если время срабатывания таймера происходит во время длинного вызова или когда цикл выполнения находится в режиме, который не контролирует таймер, таймер не срабатывает до следующей проверки цикла таймером. Следовательно, фактическое время, в которое таймер срабатывает, может быть значительным периодом времени после запланированного времени срабатывания.
При этом - вы можете запустить таймер с помощью этого метода, и он должен запуститься в определенное время, а затем включаться каждую минуту после этого («примерно так, как указано выше»).
- (id)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats – gamozzii 1 min ago edit
Например:
-(void)mySetupMethod {
NSDate *startTimeOnMinuteBoundary = ... create a date that starts on minute boundary using a date formatter ...
NSTimer *myTimer = [[NSTimer alloc] initWithFireDate:startTimeOnMinuteBoundary target:self selector:@selector(myMinuteBoundaryFirer:) userInfo:nil repeats:TRUE;
}
-(void) myMinuteBoundaryFirer:(NSTimer *)theTimer {
NSLog(@"This should be on a minute boundary, approximately only though because this is not a real time timer");
}