2011-02-08 12 views
0

iPhoneの時計アプリにタイマータブのようなcountdowtimerアプリケーションを書いています。今、私は日付、 '今'と '未来の日'を比較することに問題があります。 すべての変数は合成され、非原子的であり、保持されます。 私はこのコードを今すぐ持っています。nstimerセレクタの日付を比較する

- (IBAction)startTimer:(id)sender { 
    NSLog(@"startTimer"); 
    pickerView.hidden = YES; 
    labelView.hidden = NO; 
    now = [[NSDate alloc] init]; 
    futureDate = [[NSDate alloc] initWithTimeInterval:picker.countDownDuration sinceDate:now]; 
    NSLog(@"Dates.\nNow = (%@) \nfutureDate (%@)", now, futureDate); 
    timerLabelUpdater = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(labelUpdater) userInfo:nil repeats:YES]; 
} 

- (void)labelUpdater { 
    if ([now timeIntervalSinceDate:futureDate] < 0.0) { 
     NSLog(@"YES\nDates.\nNow = (%@) \nfutureDate (%@)", now, futureDate); 
    } else { 
     NSLog(@"NO\nNow = (%@) \nfutureDate (%@)", now, futureDate); 
    } 
} 

デバッガ情報: 2011-02-08 16:46:02.449アプリ[22504:207] 2011-02-08 16 startTimer:46:02.451アプリ[22504:207]日付。 Now =(2011-02-08 18:46:02 +0000)
futureDate(2011-02-08 18:47:02 +0000) 2011-02-08 16:46:03.451 App [22504:207 ]はい

そして、それは私に "永遠"を与え続けます。 可変時間が表示されている場合は、時計時刻と比較して+ 2時間後になります。これはバグですか?

答えて

0

申し訳ありませんが、私は間違った日付をテストしていました。変数の現在と将来の日付を比較する時間間隔は永遠に同じです。テスト中の[[NSDate alloc] init]のnow変数を置き換えました。今すぐコードが動作します。

if ([[[NSDate alloc]init] timeIntervalSinceDate:futureDate] < 0.0) { 
    NSLog(@"YES\nDates.\nNow = (%@) \nfutureDate (%@)", now, futureDate); 
} else { 
    NSLog(@"NO\nNow = (%@) \nfutureDate (%@)", now, futureDate); 
} 

申し訳ありませんが、愚かな質問です。