NSTimer в то время как цикл - PullRequest
       18

NSTimer в то время как цикл

0 голосов
/ 19 сентября 2011

Приветствие !!

Следующие коды сейчас я делаю:

BOOL bJobDone = NO ;
bBrickDropDone = NO ; //global var here !!
NSTimer* timer = nil ;

while(bJobDone==NO)
{    

    if(timer == nil)
    {
        timer = [NSTimer scheduledTimerWithTimeInterval:0.3
                                                      target:self
                                                    selector:@selector(dropBrick:)
                                                    userInfo:nil
                                                     repeats:YES];
    }
    if(bBrickDropDone==YES)
    {
        bBrickDropDone = NO ;
        [timer invalidate] ;
        timer = nil ;

        if([self MarkBrickBomb]==YES)
        {
            bJobDone = NO ;
            [self dealBomb] ;
            if([self AllClean]==YES)
            {
                bJobDone = YES ;
                igameidx = igameidx + 1 ;
            }
        }else
        {
            bJobDone = YES ;
        }            
    }//if(bBrickDropDone==YES)

}//while bJobDone==NO

Как видите, таймер вызывает функцию dropBrick один раз в течение 0,3 секунды, если bBrickDropDone наконец =ДА (функция dropBrick заменит это значение на ДА, если что-то случится), она обработает другую функцию MarkBrickBomb и будет работать до тех пор, пока bJobDone = ДА, не выйдет из цикла !!

Мне кажется, мой код паршивый, я не должен проверять bBrickDropDoneфлаг в цикле while, поскольку он неэффективен, а также требует значительных ресурсов !!

Мне нужен таймер для получения анимированного переключателя UIImageView, купить Еще не нравится проверять флаг done в цикле while(я думаю, это плохо), что я могу сделать в этом случае?Могу ли я получить подсказку для этого?

И, простите за мой английский !!

1 Ответ

1 голос
/ 19 сентября 2011

Таймер никогда не может срабатывать, пока bJobDone == НЕТ, это потому, что NSTimers добавляются в NSRunLoop и могут срабатывать только во время ожидания события.

...