Дублировать действие одновременно NSTimer? - PullRequest
0 голосов
/ 26 марта 2012

Ниже мой исходный код, я не знаю почему. Может ли кто-нибудь объяснить мне?. Большое спасибо

- (void)onTimer:(NSTimer *)timer {
    long currentPlaybackTime = self.player.currentPlaybackTime;
    int currentHours = (currentPlaybackTime / 3600);
    int currentMinutes = ((currentPlaybackTime / 60) - currentHours*60);
    int currentSeconds = (currentPlaybackTime % 60);
    self.currentLabel.text = [NSString stringWithFormat:@"%i:%02d:%02d", currentHours, currentMinutes, currentSeconds];
    if( currentMinutes > 0 && currentSeconds == 5)
    {
        //duplicate action at here.
        NSLog(@"Make a thread to decrypt file buffer");
        [self bufferEncryption];
    }
}

Таймер вызова:

[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(onTimer:) userInfo:nil repeats:YES];

Когда я пытаюсь:

[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(onTimer:) userInfo:nil repeats:NO];

Таймер вызывает только один раунд. Почему?

С уважением,

1 Ответ

2 голосов
/ 26 марта 2012

Отвечая на ваш комментарий .... Вы вызываете свой таймер каждую ПОЛОВИНУ секунды, поэтому (currentPlaybackTime % 60) оценивает до 5 раз (мод возвращает INTEGER).Один раз за 5 и еще раз за 5,5.Вот почему он вызывается дважды.

...