Метод, вызываемый таймером, должен иметь определение
- (void)methodName:(NSTimer *)aTimer;
Таким образом, у метода есть экземпляр таймера, который был запущен. Как вы это делаете, метод не будет знать, был ли таймер недействительным или нет.
Попробуйте изменить инициализацию таймера на
timer = [NSTimer scheduledTimerWithTimeInterval: 0.2f target: self selector:@selector(timerAction:) userInfo:nil repeats:YES]
и способ
-(void) timerAction:(NSTimer *)aTimer{...}
Надеюсь, это поможет