GCD下的定时器

2016-07-26  本文已影响26人  锦瑟流年终成忆

dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, <#dispatchQueue#>);

dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, <#intervalInSeconds#> * NSEC_PER_SEC, <#leewayInSeconds#> * NSEC_PER_SEC);

dispatch_source_set_event_handler(timer, ^{

<#code to be executed when timer fires#>

});

dispatch_resume(timer);

<#dispatchQueue#>)

这个参数是说 要在主线程还是子线程中执行  一般为主线程

<#intervalInSeconds#>

这个参数是传入一个秒数  比如3 会在3s后进入到下一张图片

<#leewayInSeconds#>

这个参数告诉系统我们需要计时器触发的精准程度。所有的计时器都不会保证100%精准,这个参数用来告诉系统你希望系统保证精准的努力程度。如果你希望一个计时器每五秒触发一次,并且越准越好,那么你传递0为参数。另外,如果是一个周期性任务,比如检查email,那么你会希望每十分钟检查一次,但是不用那么精准。所以你可以传入60,告诉系统60秒的误差是可接受的。

上一篇下一篇

猜你喜欢

热点阅读