2015-10-14 2 views
1

У меня проблема с недействительностью моего таймера.NSTimer не делает недействительным

@property (nonatomic, strong) NSTimer *timer;

Внутри моего блока на успех, я выделение и установка мой таймер на главной теме:

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

В моем textFieldDidBeginEditing я недействительности мой таймер так:

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

Мой метод по-прежнему выполняется по таймеру. В чем подвох?

+0

чек, если self.timer не ноль, если вы звоните диспетчерская асинхронной ... 'assert (self.timer)' –

+0

Я проверил. Это не ноль – Flipper

+0

, тогда вы можете установить несколько объектов таймера без аннулирования старого? –

ответ

3

Возможно, вы устанавливаете несколько объектов таймера, не дав сначала аннулировать старые?

отпуская таймер объектов Thats уже запланировано не аннулирует таймер, так:

, прежде чем делать self.timer = ...., звоните [self.timer invalidate];

Смежные вопросы