我正在启动一个基于错误条件触发事件的计时器。但是如果条件在预定时间内变为真,我需要停止触发事件。
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的方法来做到这一点。
答案 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;
}
}