Добавьте к следующему коду viewDidLoad код и сохраните целевую дату как свойство или ivar
NSTimeInterval currentDateSeconds = [[NSDate date] timeIntervalSince1970];
NSTimeInterval targetDateSeconds = currentDateSeconds + [self secondsInDay:0 hour:1 min:3 sec:0];
targetDate = [NSDate dateWithTimeIntervalSince1970:targetDateSeconds];
, затем добавьте метод для преобразования целевой даты в секунды, например, в вашем примере это 1 час 3 минуты
- (NSTimeInterval) secondsInDay: (int) day hour:(int)hour min:(int)min sec: (int)sec {
NSTimeInterval secondsInOneDay = 24 * 60 * 60;
return day * secondsInOneDay + hour * 60 * 60 + min * 60 + sec; }
затем используйте следующий timeFired
метод:
-(void)timerFired {
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *dateComponents = [calendar components:(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond) fromDate:[NSDate date] toDate:targetDate options:0];
NSInteger year = dateComponents.year;
NSInteger month = dateComponents.month;
NSInteger day = dateComponents.day;
NSInteger minute = dateComponents.minute;
NSInteger second = dateComponents.second;
if(year == 0 &&
month == 0 &&
day == 0 &&
minute == 0 &&
second == 0) {
NSLog(@"FINISH");
[timer invalidate];
} else {
NSLog(@"%@", [NSString stringWithFormat:@"%d%@%02d %@",minute,@":",second,@"Sec"]);
}}