@property (weak, nonatomic) NSTimer *timer;
-void()timerMethod
{
...some stuff
[self.timer invalidate];
self.timer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(refreshScreen:) userInfo:nil repeats:NO];
}
-void(refreshScreen:id(sender)
{
...some stuff that calls other methods one of which calls timerMethod to continue the process
}
-(void)viewWillDisappear:(BOOL)animated
{
[self.timer invalidate];
self.timer = nil;
}
当我转移到新的VC时,会调用viewWillDisappear并确认 1 /计时器无效(使用[self.timer isValid]。 2 /我们在主线程上(使用[NSThread isMainThread] 3 /计时器是Nil
创建时的计时器本身也在主线程上确认。
几秒钟后,在另一个VC上,计时器调用" refreshScreen"方法无论如何。
我已经检查过每次传递时timerMethod中的invalidate是无效的。我这样做是为了确保不会创建多个计时器。断点显示虽然计时器在退出时失效并且为nil,但一旦它调用" refreshScreen"它再次重新建立了计时器,尽管其VC被解雇,但它已不再是零。