首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSTimer毫秒精度

NSTimer毫秒精度
EN

Stack Overflow用户
提问于 2016-01-02 09:48:04
回答 4查看 1.6K关注 0票数 0

我有一个9位数,需要每秒钟增加500,但我决定每毫秒增加一个数字,并更新显示数字的标签。我使用的是NSTimer,但正如我在各地看到的那样,它们是不准确的,也不是命中注定的。我试过使用CFAbsoluteTimeGetCurrent,但没能让它正常工作。简单地使用NSTimer产量和不准确的值。每次用户打开应用程序时,增量都不会停止,它只是将值相加,然后再次开始递增。有什么想法吗?

更新:

尽管大多数答案都指向正确的方向,但我解决了我的问题有点不同。感谢所有的回答和马丁。

我使用的是CADisplayLink而不是NSTimer,得到了非常准确和稳定的结果。现在请注意,我说得很漂亮,因为结果并不完全准确,但是在我的例子中,我增加了一个9位数--它们并不明显,而且当视图再次出现时,我的数字就会被纠正。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-02 10:18:25

考虑使用CADisplayLink来更新您的界面--它给出了自绘制上一帧以来所传递的时间的非常准确的数字,这样您就可以始终保持UILabel的最新更新,而不管您的框架有多高或多低。

票数 1
EN

Stack Overflow用户

发布于 2016-01-02 11:47:04

你可以得到精确

代码语言:javascript
复制
timer = [NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(countup)userInfo:nil repeats:YES];
票数 3
EN

Stack Overflow用户

发布于 2016-01-02 10:05:55

只使用计时器作为触发器来更新屏幕,不要依赖于每次火灾之间的确切时间。

保留一个表示开始时间的NSDate,并在计时器触发时使用当前日期来计算差异并更新标签。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34564551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档