2015-10-14 1 views
1

J'ai un problème d'invalidation de ma minuterie.NSTimer n'invalide pas

@property (nonatomic, strong) NSTimer *timer;

Dans mon bloc de succès, j'allouons et mettre ma minuterie fil conducteur:

dispatch_async(dispatch_get_main_queue(), ^{ 
    self.timer = [NSTimer scheduledTimerWithTimeInterval:[Config refreshInterval].integerValue target:self selector:@selector(methodThatHasABlockCalledMentionedAbove) userInfo:nil repeats:NO]; 
}); 

À mon textFieldDidBeginEditing J'INFIRMER mon horloge comme ceci:

dispatch_async(dispatch_get_main_queue(), ^{ 
     [self.timer invalidate]; 
     self.timer = nil; 
}); 

Ma méthode est toujours exécutée sur la minuterie. Quel est le piège?

+0

vérifier si self.timer n'est pas nul lorsque vous appelez expédition ... async 'assert (self.timer)' –

+0

J'ai vérifié. Ce n'est pas – Flipper

+0

pouvez-vous régler plusieurs objets timer sans invalider l'ancien? –

Répondre

3

Peut-être que vous configurez plusieurs objets de minuterie sans invalider les anciens en premier ?!

libérant une minuterie objets des thats déjà programmés n'invalide pas la minuterie, donc:

avant de faire self.timer = ...., appelez [self.timer invalidate];