2010-08-04 70 views
0

我已经创建了一个计时器,我将剩余时间转换为格式为“mm:ss”的字符串,当时间的字符串值为00:00时,我想使计时器。由于某种原因,它不起作用,即使我记录剩余的时间,我看到该值具有正确的格式,所以我不知道为什么我的“if”分支在“countTime:”从不输入。无效的NSTimer不工作

任何人都可以帮忙吗?

-(id) init { 
    if(self = [super init]) { 
     NSDate *date = [[NSDate alloc] init]; 
     self.intervalLength = date; 
     [date release]; 

     NSString *timeRem = [[NSString alloc]init]; 
     self.timeRemaining = timeRem; 
     [timeRem release]; 


     formatter = [[NSDateFormatter alloc] init]; 
     [formatter setDateFormat:@"mm:ss"]; 
     notification = [NSNotification notificationWithName:@"timer" object:self]; 
     notificationForEnd = [NSNotification notificationWithName:@"timerFinished" object:self]; 
     NSMutableDictionary *info = [[NSMutableDictionary alloc] init]; 
     [info setObject:formatter forKey:@"format"]; 
     [info setObject:notification forKey:@"notification"]; 
     [info setObject:notificationForEnd forKey:@"notificationEnd"]; 
     NSTimer *timer = [[NSTimer alloc] init]; 
     timer = [[NSTimer alloc] init]; 
     timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(countTime:) userInfo:info repeats:YES]; 
     self.intervalTimer = timer; 
    } 
    return self; 
} 

-(void) startIntervalCountDown { 
    runLoop = [NSRunLoop currentRunLoop]; 
    [runLoop addTimer:self.intervalTimer forMode:NSDefaultRunLoopMode]; 
} 

-(void) countTime:(NSTimer*)timer { 
    if(self.timeRemaining == @"00:00") { 
     [timer invalidate]; 
     timer = nil; 
     [[NSNotificationCenter defaultCenter] postNotification:[[timer userInfo] objectForKey:@"notificationEnd"]]; 
    } 
    d = [self.intervalLength dateByAddingTimeInterval: -1.0]; 
    self.intervalLength = [d copy]; 
    self.timeRemaining = [[[timer userInfo] objectForKey:@"format"] stringFromDate:d]; 
    [[NSNotificationCenter defaultCenter] postNotification:[[timer userInfo] objectForKey:@"notification"]]; 

回答

2

您正在比较指针相等而不是字符串相等。你想要

[self.timeRemaining isEqualToString:@"00:00"]