Самый эффективный способ реализации будильника на iPhone - PullRequest
1 голос
/ 15 июля 2010

Я реализовал простые часы примерно так:

- (void)runTimer {

    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 
                                             target:self 
                                           selector:@selector(showActivity) 
                                           userInfo:nil 
                                            repeats:YES];

}

- (void)showActivity {

    NSDateFormatter *df = [[[NSDateFormatter alloc] init] autorelease];
    NSDate *date = [NSDate date];

    [df setDateFormat:@"HH:mm"];

    [clock setFont:digitalFont];

    [clock setText:[df stringFromDate:date]];

}

В основном это просто задача, которая запускается каждую секунду, чтобы обновить время в UILabel. А что если я бы хотел расширить эти часы, чтобы они реагировали на определенные моменты времени, как будильник? Непрерывная проверка значения NSDate, похоже, расходует заряд батареи. Как бы я это сделал?

Ответы [ 2 ]

4 голосов
/ 15 июля 2010

Самый простой способ добиться этого? Просто имейте другой NSTimer, который настроен на срабатывание во время тревоги.

NSTimer* myTimer = [[NSTimer alloc] initWithFireDate:(NSDate *)date
                                            interval:(NSTimeInterval)seconds
                                              target:(id)target
                                            selector:(SEL)aSelector
                                            userInfo:(id)userInfo
                                             repeats:(BOOL)repeats];
0 голосов
/ 15 июля 2010

Вы можете использовать initWithFireDate метод

...