停止已经安排的nstimer

时间:2015-02-24 13:04:01

标签: ios nstimer

我正在启动一个基于错误条件触发事件的计时器。但是如果条件在预定时间内变为真,我需要停止触发事件。

if(!condition)
{
  myTimer =[NSTimer scheduledTimerWithTimeInterval:200 target:self selector:@selector(trigger:) userInfo:nil repeats:NO];
}
else
{
 if([myTimer isvalid])
   [myTimer invalidate]
   myTimer= nil;
}

如果条件在200秒内变为真,则不要触发@selector。

使计时器失效不会阻止方法触发。我可以通过BOOL标志来做到这一点,但是我可以使用NSTimer的方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

您必须创建myTimer的多个实例。检查myTimer是否已经启动?

if(!condition)
{
  if(myTimer == nil)
     myTimer =[NSTimer scheduledTimerWithTimeInterval:200 target:self selector:@selector(trigger:) userInfo:nil repeats:NO];
}
else
{
 if([myTimer isvalid])
   { 
     [myTimer invalidate]
      myTimer = nil;
    }
}