2012-01-05 60 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];