Я использую NSTimer
следующим образом:
timer = [NSTimer scheduledTimerWithTimeInterval:30.0f target:self selector:@selector(tick) userInfo:nil repeats:YES];
Конечно, NSTimer
сохраняет цель, которая создает цикл сохранения. Кроме того, self
не является UIViewController, поэтому у меня нет ничего подобного viewDidUnload
, где я могу сделать недействительным таймер, чтобы разорвать цикл. Поэтому мне интересно, могу ли я использовать слабую ссылку:
__weak id weakSelf = self;
timer = [NSTimer scheduledTimerWithTimeInterval:30.0f target:weakSelf selector:@selector(tick) userInfo:nil repeats:YES];
Я слышал, что таймер должен быть недействительным (я думаю, чтобы освободить его из цикла запуска). Но мы могли бы сделать это в нашем dealloc, правильно?
- (void) dealloc {
[timer invalidate];
}
Является ли это жизнеспособным вариантом? Я видел много способов, которыми люди справляются с этой проблемой, но я этого не видел.