我知道dispatch_time
是根据设备时钟的时间,如果设备进入休眠状态,时钟也会休眠。另一方面,dipatch_walltime
是根据挂钟的时间,它永远不会进入睡眠状态。我的问题是,在不同的情况下使用其中一种或其他方面是否存在性能差异?有人可以给我一些更多细节,因为Apple文档并非详尽无遗。
例如,我正在写一个Timer
类,它在某些时间间隔内运行。余地也可能是10至30秒。性能方面,我应该使用dispatch_time
或dispatch_walltime
哪一个。
答案 0 :(得分:30)
dispatch_time
停止运行。
dispatch_walltime
继续运行,因为现实世界继续运行。
所以假设你想在1小时后做一个动作,但是5分钟后你的电脑就会睡50分钟。然后:
dispatch_walltime
将在计时器唤醒后5分钟从现在开始执行一小时。
dispatch_time
将在计算机运行一小时后执行,即从唤醒后的55分钟,从现在开始的1小时50分钟。