iOS NSTimer

2021-09-23  本文已影响0人  山杨

1.时间不准的原因

NSTimer是基于RunLoop实现的, 当RunLoop中有大量任务的情况下NSTimer就会不准
解决办法:
使用GCD的定时器dispatch_source_t(基于系统内核)

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);
上一篇下一篇

猜你喜欢

热点阅读