2015-02-24 53 views
-1

我正在启动一个基于假条件触发事件的计时器。但是如果条件在预定时间内变为真,我需要停止触发事件。停止已安排的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秒内真不触发@选择。

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

+0

[myTimer无效] [myTimer无] – Hardik 2015-02-24 13:06:09

+0

尝试无效它'myTimer =零之后设置定时器到零;' – Mellson 2015-02-24 13:06:46

+0

我想,也没有用。检查更新的代码。 – vishnuvarthan 2015-02-24 13:12:19

回答

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; 
    } 
} 
+0

多个实例是谢谢你@bhumeshwer的问题 – vishnuvarthan 2015-02-24 13:53:15