Обратный отсчет продолжает отсчитывать после 0 - PullRequest
0 голосов
/ 06 января 2012

У меня небольшая проблема: я использую этот код, чтобы начать отсчет с 20 тоже 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 ]

4 голосов
/ 06 января 2012

Предполагая, что у вас все еще есть указатель на ваш NSTimer, вы хотите вызвать метод - invalidate .

if (mainInt <= 0)
{
    [randomMain invalidate];
    [randomMain release]; // remove if you're using ARC.
}
0 голосов
/ 06 января 2012

Когда вы закончите использовать объект таймера (в вашем случае, когда ваш iVar достигнет 0), вам придется вызывать метод invalidate для вашего объекта таймера.

[randomMain invalidate];
0 голосов
/ 06 января 2012

Вообще говоря, в большинстве языков кодирования, которые я использовал, как и у других, в цикле, который ведет обратный отсчет оператора if, что при достижении 0 вы сбрасываете счет или останавливаете его.

0 голосов
/ 06 января 2012

Отправьте invalidate таймеру в randomMainVoid и отпустите его при достижении 0.

...