Самый эффективный способ вести обратный отсчет

Я пишу приложение, которое включает в себя обратный отсчет. Обратный отсчет отображается на ярлыке, однако я не уверен, что обновляю ярлык наиболее эффективно. Я использую таймер с интервалом в 1 секунду. Есть ли способ потреблять меньше ресурсов? Кроме того, будет ли это сбой на старых устройствах?

- (void)viewDidLoad
{
    [super viewDidLoad];
//Create Calendar for NSDates
gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
[gregorian setTimeZone:[NSTimeZone timeZoneWithName:@"EST"]];

//Create NSDate lunchTime based on Now
now = [NSDate date];
NSDateComponents *compsOfNow = [gregorian components:(NSWeekdayCalendarUnit |NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit |NSYearCalendarUnit|NSMonthCalendarUnit|NSEraCalendarUnit)fromDate:now];
[compsOfNow setHour:12];
[compsOfNow setMinute:50];
lunchTime = [gregorian dateFromComponents:compsOfNow];

//Create timer and set text
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerTicked:) userInfo:nil repeats:YES];
lunchCountdownLabel.text = [NSString stringWithFormat:@"%i:%i:%i", difference.hour, difference.minute, difference.second];

}

- (void)timerTicked:(NSTimer*)timer {
now = [NSDate date];
difference = [gregorian components:NSYearCalendarUnit|NSMonthCalendarUnit|NSDayCalendarUnit|NSHourCalendarUnit|NSMinuteCalendarUnit|NSSecondCalendarUnit fromDate:now toDate:lunchTime options:0];
lunchCountdownLabel.text = [NSString stringWithFormat:@"%i:%i:%i", difference.hour, difference.minute, difference.second];
NSLog(@"Timer Ticked");

Ваш вклад приветствуется,

Спасибо,

HBhargava

1 ответ

Решение

Мне кажется, это нормально... просто не забудьте аннулировать таймер, как только вы закончите с ним (что вы не делаете на данный момент).

Другие вопросы по тегам