1

次のような単純な時計を実装しました。

- (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 の値を継続的にチェックすると、バッテリーが大量に消費されるようです。どうすればいいですか?

4

2 に答える 2

4

これを達成する最も簡単な方法は?NSTimerアラーム時に起動するように設定された別のものを用意してください。

NSTimer* myTimer = [[NSTimer alloc] initWithFireDate:(NSDate *)date
                                            interval:(NSTimeInterval)seconds
                                              target:(id)target
                                            selector:(SEL)aSelector
                                            userInfo:(id)userInfo
                                             repeats:(BOOL)repeats];
于 2010-07-15T11:41:53.450 に答える
0

initWithFireDateメソッドを使用できます

于 2010-07-15T11:38:54.187 に答える