NSTimer ne s'arrête pas

J'ai un timer qui se déclenche lorsque l' viewWillAppear méthode est appelée et annule lorsque le viewDidDisappear méthode est appelée. Mais après un certain laps de basculement entre les vues de la minuterie continue de tir, même après qu'il a été invalidé. Quel est le problème?

Voici mon code:

NSTimer *timer;

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    timer = [NSTimer scheduledTimerWithTimeInterval: 0.2f
                     target: self
                     selector:@selector( timerAction )
                     userInfo:nil
                     repeats:YES];
}

-(void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];
    [timer invalidate];
    timer = nil;
}

-(void) timerAction
{
    NSLog(@"timerAction");
}