Invalidate NSTimer не работает - PullRequest
       20

Invalidate NSTimer не работает

0 голосов
/ 04 августа 2010

Я создал таймер, в котором я конвертирую оставшееся время в строку с форматом: "mm: ss", и когда строковое значение времени равно 00:00, я хочу сделать таймер недействительным. По какой-то причине это не работает, даже когда я регистрирую оставшееся время, я вижу, что значение имеет правильный формат, поэтому я не знаю, почему моя ветвь "if" в "countTime:" никогда не вводится.

Кто-нибудь может помочь?

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

1 Ответ

2 голосов
/ 04 августа 2010

Вы сравниваете равенство указателей, а не равенство строк. Вы хотите

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