如何让NSTimer在后台运行

时间:2014-08-09 00:24:24

标签: ios objective-c nstimer

我想让倒数计时器在后台继续运行。这就是我正在使用的代码:

- (void)timerRun
{
    secondsCount--;

    int minutes = secondsCount / 60;
    int seconds = secondsCount - (minutes * 60);

    NSString *timerOutput = [NSString stringWithFormat:@"%2d:%.2d", minutes, seconds];
    self.timerLabel.text = timerOutput;

    if (secondsCount == 0) {
        [timer invalidate];
        self.timerLabel.text = @"Time out";
    }
}

- (void)startTimer
{
    secondsCount = 120;

    if (secondsCount == 0) {
        [timer invalidate];
        self.timerLabel.text = @"None";
    }
    else {
        [timer invalidate];
        timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerRun) userInfo:nil repeats:YES];
    }
}

如何使计时器在后台继续运行,并防止计时器每次重启时重启?感谢。

1 个答案:

答案 0 :(得分:0)

你可以禁止和不良做法。 NSTimer需要一个运行循环来计算你不应该在后台使用它,所以NSTimer在后台停止。像@Dan Dosch说的那样。进入后台时记录时间戳,并将其与回到前台时的时间戳进行比较。您只需要在viewWillAppear中更新您的视图,它就能完成这项工作。