可可 – NSTimer在跑垒被阻挡时不起火

可可 – NSTimer在跑垒被阻挡时不起火,第1张

概述我刚刚完成了我的应用程序和beta测试发现秒表部分的错误… 秒表使用nstimer进行计数,并有一个用于存储圈数的表,但是当笔记本表滚动时,手表停止或暂停,并且不会弥补丢失的时间。 这是停止通过使用: startingTime = [[NSDate date] timeIntervalSince1970]; 计算经过的时间。 但是我仍然使用NSTimer每0.1秒触发一次,这意味着即使经过的时间将 我刚刚完成了我的应用程序和beta测试发现秒表部分的错误…
秒表使用nstimer进行计数,并有一个用于存储圈数的表,但是当笔记本表滚动时,手表停止或暂停,并且不会弥补丢失的时间。

这是停止通过使用:

startingTime = [[NSDate date] timeIntervalSince1970];

计算经过的时间。

但是我仍然使用NSTimer每0.1秒触发一次,这意味着即使经过的时间将在最后更新正确滚动仍然停止定时器,并将其与Apple秒表进行比较,这让我想知道是否秒表有一个单独的线程只是为了经过时间计数。有谁知道这是怎么做的?

现在,使用时代以来,Epoch在某种意义上表现良好,但使起动,停止,重新启动秒表

当手表停止时,时间被存储并用于计算手表重新启动时的偏移量,但是当手表重新启动时,似乎有一些延迟被引入并且时间明显上升。

对于根本原因或解决方案的任何想法将不胜感激。

解决方法 bbum的答案提供了更好的方式设计您的应用程序,但如果您希望定时器触发,无论用户是否 *** 纵UI,都需要将其添加到运行循环的跟踪模式。

假设你正在为iPhone开发,那个模式是UITrackingRunLoopMode。如果您正在为Mac开发,则有一个类似的命名NSEventTrackingRunLoopMode。

NSRunLoop *runloop = [NSRunLoop currentRunLoop];NSTimer *timer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(myTimerAction:) userInfo:nil repeats:YES];[runloop addTimer:timer forMode:NSRunLoopCommonModes];[runloop addTimer:timer forMode:UITrackingRunLoopMode];
总结

以上是内存溢出为你收集整理的可可 – NSTimer在跑垒被阻挡时不起火全部内容,希望文章能够帮你解决可可 – NSTimer在跑垒被阻挡时不起火所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1040852.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存