如何确定我的计时器是否按计划进行?

问题描述 投票:0回答:2

我知道它是可重入的,不会超出自身,但我需要知道它是否陷入困境。

   init() {
            checkMoveTimer = Timer.scheduledTimer(withTimeInterval: 0.3, repeats: true, block: { _ in
                self.timeToMoveGroundTroups()
            })
        }

        func timeToMoveGroundTroups() {
            if gamePaused {
                return
            }

            for (_, vCache) in data.groundActive {
                data.groundObjects[vCache.index].next()
            }
        }
ios swift
2个回答
1
投票

将每次调用操作(timeToMoveGroundTroups)的时间戳保存到实例属性中(在此之前)将当前时间戳与之比较。如果差异太大,你可以采取某种行动(log,fatalError,等等)。

另一种方法是利用新的os_signpost记录来绘制仪器中发生的情况。

关于您展示的代码的另外两条评论:

  • 如果你提供tolerance,你的计时器实际上会表现得更好,通常大约是间隔的百分之十
  • 你有一个保留周期会导致内存问题; self需要在你的匿名函数中声明unowned

0
投票
if !checkMoveTimer.valid {
 //TODO:
}

如果我理解正确的话。

© www.soinside.com 2019 - 2024. All rights reserved.