У меня есть приложение, которое использует счетчик секундомеров в формате ЧЧ: мм: сс. Код выглядит довольно простым для меня, и я не могу придумать более эффективный способ его запуска.
По какой-то причине, когда я запускаю его, наблюдается очень заметное и последовательное (каждый раз, когда я запускаю его в одном и том же месте) отставание, когда таймер достигает 00:00:02. Он остается на 00:00:02 в течение полной секунды, а затем рассчитывается в обычном режиме. Почему это случилось?
-(IBAction)startAndStop;
{
if (!timer) {
NSLog(@"Pressing Start Button");
[startAndStopButton setTitle:@"Stop" forState:0];
startDate = [[NSDate date] retain];
timerLabel.text = @"00:00:00";
timer = [NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(timerStart)
userInfo:nil
repeats:YES];
} else {
NSLog(@"Pressing Stop Button");
[startAndStopButton setTitle:@"Start" forState:0];
[startDate release];
[timer invalidate];
timer = nil;
[timer release];
}
}
-(void)timerStart
{
NSDate *currentDate = [NSDate date];
NSTimeInterval countInSeconds = [currentDate timeIntervalSinceDate:startDate];
NSDate *timerDate = [NSDate dateWithTimeIntervalSinceReferenceDate:countInSeconds];
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"HH:mm:ss"];
[df setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
NSString *timeString = [df stringFromDate:timerDate];
[df release];
timerLabel.text = timeString;
}