Swift 为什么';asyncAfter';不是在准确的时间行动吗?
我使用DispatchQueue.main.asyncAfter方法在板中设置具有精确间隔时间的石头 它适用于小石块。(每秒1块石头) 但是棋盘上的石头越来越多,它就不能正常工作了。(每秒2块石头:同时放置2块石头)Swift 为什么';asyncAfter';不是在准确的时间行动吗?,swift,Swift,我使用DispatchQueue.main.asyncAfter方法在板中设置具有精确间隔时间的石头 它适用于小石块。(每秒1块石头) 但是棋盘上的石头越来越多,它就不能正常工作了。(每秒2块石头:同时放置2块石头) 为什么会发生此错误?它就在方法名称中--“asyncAfter”。该方法不保证在特定时间运行代码,而是在特定时间后运行代码。那可能是在时间之后,也可能是以后。您应该认为该方法的意思是“至少等待这么长时间”,而不是“此时正好运行代码” 如果需要更精确的计时,请考虑使用Timer或创建
为什么会发生此错误?它就在方法名称中--“asyncAfter”。该方法不保证在特定时间运行代码,而是在特定时间后运行代码。那可能是在时间之后,也可能是以后。您应该认为该方法的意思是“至少等待这么长时间”,而不是“此时正好运行代码” 如果需要更精确的计时,请考虑使用
Timer
或创建DispatchSourceTimer
var turn = 0
for pos in self.history {
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .microseconds(Int(1000000 * turn))) {
//////////
//put stone in board
////////////
}
turn += 1
}