После объединения ответов Натана и Марка метод полного таймера может выглядеть примерно так:
- (void)timer:(NSTimer *)timer {
NSInteger secondsSinceStart = (NSInteger)[[NSDate date] timeIntervalSinceDate:startDate];
NSInteger seconds = secondsSinceStart % 60;
NSInteger minutes = (secondsSinceStart / 60) % 60;
NSInteger hours = secondsSinceStart / (60 * 60);
NSString *result = nil;
if (hours > 0) {
result = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
}
else {
result = [NSString stringWithFormat:@"%02d:%02d", minutes, seconds];
}
// set result as label.text
}
когда вы запускаете игру, вы устанавливаете startDate и запускаете таймер следующим образом:
self.startDate = [NSDate date];
timer = [NSTimer scheduledTimerWithTimeInterval:0.25 target:self selector:@selector(timer:) userInfo:nil repeats:YES];
при остановке игры вы используете это:
self.startDate = nil;
[timer invalidate];
timer = nil;