2010-07-15 7 views
1

J'ai mis en place une simple horloge comme ceci:La façon la plus efficace de mettre en œuvre une alarme sur iPhone

- (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]]; 

} 

Il est basiclly juste une tâche qui est exécuté chaque seconde pour mettre à jour le temps dans un UILabel. Maintenant, que faire si je voudrais prolonger cette horloge pour réagir à certains moments, tout comme un réveil. La vérification continue de la valeur de NSDate semble nécessiter une batterie intensive. Comment ferais-je cela?

Répondre

4

La façon la plus simple pour y parvenir? Juste avoir un autre NSTimer qui est mis à feu au moment de l'alarme.

NSTimer* myTimer = [[NSTimer alloc] initWithFireDate:(NSDate *)date 
              interval:(NSTimeInterval)seconds 
               target:(id)target 
              selector:(SEL)aSelector 
              userInfo:(id)userInfo 
              repeats:(BOOL)repeats]; 
Questions connexes