【发布时间】:2023-04-02 09:38:01
【问题描述】:
我正在尝试使用 NSTimer 创建一个秒表样式的计时器,它每 0.1 秒递增一次,但有时它似乎运行得太快了..
这就是我的做法:
Timer =[NSTimer scheduledTimerWithTimeInterval: 0.1 target:self selector:@selector(updateTimeLabel) userInfo:nil repeats: YES];
然后:
-(void)updateTimeLabel
{
maxTime=maxTime+0.1;
timerLabel.text =[NSString stringWithFormat:@"%.1f Seconds",maxTime];
}
这将在Label中显示计时器的值,我以后可以利用maxTime作为计时器停止的时间......
问题是它运行非常不准确。
有没有一种方法可以确保 NSTimer 准确地每 0.1 秒触发一次?我知道 NSTimer 不准确,我要求进行调整以使其准确。
谢谢
【问题讨论】:
-
用什么方法创建定时器?
-
如果您正在计时事件,您应该在启动计时器时调用
CFAbsoluteTimeGetCurrent(),然后在间隔结束时再次调用它。减去 2 个值,您将得到以秒为单位的经过时间。 -
即实际经过的时间与您显示的时间无关。因此您可以大约每 0.1 秒更新一次显示,但您的更新是否稍微关闭并不重要。然后当你的计时器暂停时,使用我上次评论中的方法再次更新显示。
-
另外,如果您希望显示器至少每 0.1 秒更新一次,我会将计时器设置为每 0.05 秒更新一次。
-
Rob - 在 *.h 文件中创建计时器,并使用 viewdidLoad 进行初始化
标签: objective-c nstimer