首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift中的后台继续计数器

在Swift中的后台继续计数器
EN

Stack Overflow用户
提问于 2017-03-22 23:54:43
回答 2查看 564关注 0票数 2

我正在创建一个秒表,它使用NSTimer和一个表视图来跟踪用户创建的圈数。当秒表运行时,我正在与tableview交互(滚动),秒表停止计数。一旦我停止与tableview的交互,秒表就会从它停止的地方继续,而不是像它从未停止过计数一样。这不仅仅是模拟器的问题;我把它放到我的iPad上,同样的事情也会发生。我怎样才能让秒表在应用程序的后台计数,或者防止它像这样暂停?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2018-05-10 20:23:25

您可以将计时器添加到应用程序runLoop,以便计数器在与ui交互时继续。只需在创建计时器后添加以下内容:

代码语言:javascript
复制
RunLoop.current.add(timer, forMode: RunLoopMode.commonModes)
票数 1
EN

Stack Overflow用户

发布于 2017-03-23 00:22:52

简而言之,你不能。计时器在主线程上运行,如果你的应用程序在“触发日期”过后忙于做一些事情,计时器的出现将被跳过。

不要使用重复计时器和计数器来计算已经过去的时间量,而是记录要开始计时的时间,然后计算每次计时器触发时所经过的时间量。如下所示:

代码语言:javascript
复制
@class myViewController: UIViewController {

    var startTime: TimeInterval
    weak var timer: Timer?


    func startTimer() {
      startTime = Date().timeintervalSinceReferenceDate
      timer = Timer.scheduledTimer...
    }

    func timerFired(_ timer: Timer) {
       let elapsedTime = Date().timeintervalSinceReferenceDate - startTime
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42956768

复制
相关文章

相似问题

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