/ / NSTimer nespôsobuje neplatnosť - ios, časovač, ciele-c-bloky, expedícia-async

NSTimer neplatí - ios, časovač, objektív-c-bloky, dispečing-async

Mám problém so zrušením platnosti časovača.

@property (nonatomic, strong) NSTimer *timer;

Vo vnútri môjho bloku úspechu prideľujem a nastavujem časovač na hlavné vlákno:

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

V mojom textFieldDidBeginEditing Zruším platnosť svojho časovača takto:

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

Moja metóda sa stále vykonáva v časovači. Čo je to úlovok?

odpovede:

3 pre odpoveď č. 1

Možno nastavujete niekoľko objektov časovača bez toho, aby ste najskôr zrušili platnosť starých ?!

uvoľnením objektov časovača, ktoré sú už naplánované, časovač nezruší platnosť, takže:

skôr ako urobíte self.timer = .... , zavolajte [self.timer invalidate];