2012-01-05 94 views
0

我有一个小问题我正在使用此代码,开始从20计数过0仍在计算:倒计时后0

mainInt = 20; 
     randomMain = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(randomMainVoid) 
                userInfo:nil repeats:YES]; 

但0后的倒计时仍在计数(-1,-2, -3)

-(void) randomMainVoid { 

    mainInt -=1; 
    label.text = [NSString stringWithFormat:@"%D", mainInt]; 


} 

有没有人知道如何在0之后停止计数?

回答

4

假设你仍然有一个指向你的NSTimer的指针,你想调用- invalidate方法。

if (mainInt <= 0) 
{ 
    [randomMain invalidate]; 
    [randomMain release]; // remove if you're using ARC. 
} 
+2

检查mainInt是否是<='而不是== == – Jonathan 2012-01-05 20:08:28

+1

好点,谢谢你的建议。 – 2012-01-05 20:12:15

+0

Jonathan&Raskolnikov谢谢你们两位! – Blazer 2012-01-05 20:14:43

0

发送invalidate定时器在randomMainVoid并释放它达到0

0

一般来说大多数编码语言时,我已经使用的其他人,在倒计时一环if语句,当达到0,你重置计数,或停止计数。

0

一旦你完成了使用计时器对象(在你的情况下,一旦你的iVar达到0),你必须调用你的计时器对象的invalidate方法。

[randomMain invalidate];