我知道它是可重入的,不会超出自身,但我需要知道它是否陷入困境。
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()
}
}
将每次调用操作(timeToMoveGroundTroups
)的时间戳保存到实例属性中(在此之前)将当前时间戳与之比较。如果差异太大,你可以采取某种行动(log,fatalError
,等等)。
另一种方法是利用新的os_signpost
记录来绘制仪器中发生的情况。
关于您展示的代码的另外两条评论:
tolerance
,你的计时器实际上会表现得更好,通常大约是间隔的百分之十self
需要在你的匿名函数中声明unowned
if !checkMoveTimer.valid {
//TODO:
}
如果我理解正确的话。