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ď č. 1Mož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];