void dispatch_source_set_timer(dispatch_source_t source, dispatch_time_t start, uint64_t interval, uint64_t leeway);
此函数用来为timer source设置开始时间、间隔和容许值。
如果需要的话,你可以对同一个timer source对象多次调用本函数,以此来重置它的时间间隔。
参数start决定了timer使用的时钟。如果start time是DISPATCH_TIME_NOW或者以dispatch_time初始化的,则timer使用mach_absolute_time为基础。否则,如果start time是使用dispatch_walltime创建的,则timer使用gettimeofday(3)为基础。
参数leeway是一个微小的时间量,单位是纳秒,系统为了改进性能和介绍耗电,会根据这个时间来推迟timer的执行以与其它系统活动同步。比如,一个程序可能执行一个5分钟为间隔的周期性任务,这个任务有30秒的容许值。要注意,所有timer都需要考虑一些潜在因素,哪怕leeway这个容许值被指定为0。
调用这个函数没有任何效果,如果timer source已经被取消。