var turn = 0
for pos in self.history {
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .microseconds(Int(1000000 * turn))) {
//////////
//put stone in board
////////////
}
turn += 1
}
我使用DispatchQueue.main.asyncAfter方法在棋盘中设置具有确切间隔时间的宝石。
它适用于小石头。(每1秒1石) 但是板上的石头越来越多,它就不能正常工作了。(每2秒2块石头:同时放2块石头)
为什么会发生这种错误?
答案 0 :(得分:1)
它位于方法名称中 - " async After "。该方法不保证在特定时间运行代码,它在特定时间后运行代码。这可能是在时间之后或之后可能会发生的。您应该将该方法视为含义"至少等待这么长时间"而不是"此时正好运行代码"。
如果您需要更精确的时间安排,请考虑使用Timer
或创建DispatchSourceTimer
。