Я запускаю повторяющийся NSTimer после 4-секундной задержки, используя следующий код:
- (void)viewDidLoad {
[self performSelector:@selector(startTimer) withObject:self afterDelay:4];
}
- (void)startTimer {
NSTimer *mytimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(doSomething) userInfo:nil repeats:YES];
}
- (void)doSomething {
NSLog(@"What up!");
}
Проблема в том, что мне может потребоваться отменить вызов startTimer до истечения 4 секунд. Есть способ сделать это? Я вообще-то предпочел бы вообще не использовать performSelector (кажется беспорядочным). Если бы только у NSTimer было что-то вроде этого…
NSTimer * mytimer = [NSTimer scheduleTimerWithTimeInterval: 1.0 afterDelay: 4.0 цель: я селектор: @selector (doSomething) userInfo: nil Repeats: YES];
… тогда это было бы идеально, поскольку я мог бы просто назвать следующее:
[myTimer invalidate];
Любая помощь или советы приветствуются =)
PS Я нашел что-то под названием cancelPreviousPerformRequestsWithTarget в справочнике по классу NSObject. Однако не похоже, что я могу вызвать метод, откуда запускается этот код. Если вы вернетесь на правильный путь, ваши отзывы приветствуются!