关于DispatchTime和DispatchWallTime
- 开源代码
- 2025-09-10 10:09:01

先看以下代码,正常来说执行效果是一样的,都是程序执行3后触发回调
// 使用 DispatchTime.now() 或 .now() DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3) { print("This runs after 3 seconds from the current time") } // 使用 DispatchWallTime.now() DispatchQueue.main.asyncAfter(wallDeadline: DispatchWallTime.now() + 3) { print("This runs after 3 seconds from the current wall time") } 实际效果比较:DispatchTime.now() + 3 和 .now() + 3:都是计算相对延迟,使用当前时间作为基准,计算出程序执行时的未来时间。此时二者的效果是完全相同的。延迟 3 秒,程序都会在当前时刻之后的 3 秒执行任务。
DispatchWallTime.now() + 3:这也会计算出从当前系统时间开始的一个延迟任务,但它使用的是基于墙钟时间(例如考虑到手动修改系统时间或夏令时变化等)的方式。
简单说,DispatchWallTime会计算出一个具体的时间点,只有系统时钟到了那个点才会执行。比如程序执行后,我把系统时间给改了,那他就不是3s后执行,而是需要加上时间变化的差值
所以,详细大多时候我们还是希望使用DispatchTime,而不是DispatchWallTime
关于DispatchTime和DispatchWallTime由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“关于DispatchTime和DispatchWallTime”