NSTimer não para com invalidar

Eu adiciono temporizador como este

tim=[NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(repeatTim) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:tim forMode:NSDefaultRunLoopMode];

tim é a propriedade NSTimer da minha classe.

Então eu paro no botão clique como

[[fbt tim] invalidate];
[fbt setTim:nil];

fbt é exemplo da minha aula.

se eu chamar apenas invalidar, então ele não para, mas se eu configurá-lo para nulo, então eu tenho EXC_BREAKPOINT

aqui código do método repeatTim no seletor

AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
[appDelegate.wbv stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"intal()"]];

eu tentei ligarnisso einvalidar em

dispatch_async(dispatch_get_main_queue(), ^{})

também não pára o temporizador.

questionAnswers(2)

yourAnswerToTheQuestion