(iphone) мне нужно отключить таймер при повторении: нет? - PullRequest
3 голосов
/ 04 марта 2011
[NSTimer scheduledTimerWithTimeInterval: target: selector: userInfo: repeats:NO];

Когда повторяется: установлено значение NO, нужно ли отключить таймер внутри указанного селектора?

Спасибо

Редактировать

Другой вопрос, если он самостоятельно аннулируется,

Как правильно отменить такой таймер?
Так как я полагаю, что недействительный таймер, уже признанный недействительным, вылетит?

сохранить указатель на таймер и установить его в ноль внутри селектора, который будет запущен?

Ответы [ 5 ]

6 голосов
/ 04 марта 2011

Нет, таймер аннулирует себя

1 голос
/ 04 марта 2011

Вы можете сохранить флаг, чтобы сохранить, запущен таймер или нет.

например.

    BOOL gameOver = NO;
    NSTimer * gameOverTimer;


-(void)startGame
{

     gameOverTimer =    [NSTimer scheduledTimerWithTimeInterval:600 target:self selector:@selector(stopLevel:) userInfo:nil repeats:NO]; 
     // your code
}

-(void)stopLevel:(id)sender
{
     gameOver = YES;
     // your code
}

-(void)levelFinishedSuccesfully
{
     // this method will get called if user finishes the level before your timer ends/stops the level. So the timer is valid and we need to invalidate it
     if(!gameOver)
     {
          [gameOverTimer invalidate];
          gameOverTimer = nil;
     }    
      // your code
}

Надеюсь, это поможет.

1 голос
/ 04 марта 2011

@ Евгений, если вы используете

[NSTimer scheduledTimerWithTimeInterval: target: selector: userInfo: repeats:YES];

тогда в методе селектора вам нужно дать такую ​​функцию

- (void)timerFireMethod:(NSTimer*)theTimer

поэтому, если вы хотите сделать его недействительным, у вас может быть условие, подобное этому

if(workDone == YES)
{
   [theTimer invalidate];
}

Но если вы используете NO в параметре повтора, таймер аннулирует себя.

0 голосов
/ 04 апреля 2014

вам не хватает, чтобы добавить источник таймера в runloop

addTimer: forMode:

0 голосов
/ 04 марта 2011

Если количество повторений - ДА, таймер будет повторно планировать себя до тех пор, пока не станет недействительным. Если НЕТ, таймер станет недействительным после его срабатывания.

...