NSTimer不会在ViewWillDisappear中失效

时间:2014-07-01 23:11:29

标签: ios objective-c

@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被解雇,但它已不再是零。

0 个答案:

没有答案