停止一个已经安排好的 nstimer

Stop an already scheduled nstimer

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

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 的方法来做到这一点吗?

您必须创建 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;
    }
}