2011-08-04 57 views
1

我试图停止计时器。我的问题是,当我试图停止定时器的计时器的值是零,它不会失效。如果有什么方法可以停止除此之外的定时器?NSTimer没有停止

我的代码是像

计时器在头文件中定义 - 也合成。

if([str_Message isEqualToString:ON] // if the command to start timer 

{ 


if(!timer) 

{ 

tmr_CallWebService = [[NSTimer scheduledTimerWithTimeInterval:Time_TracingInterval target:ClassTracing selector:@selector(startLocationTracing) userInfo:nil repeats:YES]retain]; 

} 

//to stop timer 

else if([str_Message isEqualToString:OFF]) 
{ 
if(timer) 

{ 

[timer invalidate]; 
timer = nil; 

} 

请帮我...在此先感谢

+0

你在哪里设定时间?它保留了吗? – progrmr

+0

@progrmr我忘了写..我刚刚编辑我的代码。 –

+0

但你从哪里开始计时?也许你只是想将'tmr_CallWebService'重命名为'timer'。 –

回答

2

[str_Message isEqualToString:ON]应该是这样的[str_Message isEqualToString:@"ON"]。类似于与OFF的比较。使用@"OFF"

+0

这不是问题,因为条件成立了,但计时器值为零是问题。当收到off命令时 –

+0

那么,如果'ON'被声明为'NSString * ON = @“ON”;'和OFF类似,那么这个部分就没有问题。 – progrmr

+0

@iPhone乐趣:是否将“关”和“开”定义为常量? –

2

如果你有一个为计时器声明的属性,你应该使用它。例如,如果您的计时器定义为@property (nonatomic, retain) NSTimer *myTimer;,则应将其称为self.myTimer,并使用该设置器对其进行设置,并稍后使用访问器将其设置为无效。

它看起来像你没有设置tmr_CallWebService到你的计时器伊娃在任何地方,所以你只是泄漏和失去参考。

5

我想你只需要用timer替换tmr_CallWebService即可。