美文网首页ios常用功能
NSTimer定时器有时候不准确的原因

NSTimer定时器有时候不准确的原因

作者: 落叶兮兮 | 来源:发表于2020-07-15 19:39 被阅读0次

当我们启动NSTimer定时器时,其并不是按照时间的间隔进行循环调用的。事实上,在定时器注册到Runloop中后,runloop会设置一个一个的时间点进行调用,比如10,20,30.如果错过了某个时间点,则定时器并不会延时调用,而是等待下一个时间点调用,所以定时器并不是准确的。
定时器的实现是基于Runloop的,平时我们使用定时器或许并没有对Runloop做什么操作,那是因为主线程的runloop默认开启运行的,如果我们在子线程中也需要重复执行某一动作,需要手动开启定时器。例如

- (void)viewDidload {
  [super viewDidload];
  queue = dispatch_queue_create("myQueue",DISPATCH_QUEUE_CONCURRENT);
dispatch_async (queue, ^{
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(time) userInfo:nil repeat:YES];
});
}

- (void)time {
 NSLog(@"run");
}

运行后,发现,定时器并没有启动,我们必须在线程中手动执行下面的代码,定时器才能正常工作

[[NSRunLoop currentRunLoop] run];

相关文章

  • NSTimer定时器有时候不准确的原因

    当我们启动NSTimer定时器时,其并不是按照时间的间隔进行循环调用的。事实上,在定时器注册到Runloop中后,...

  • ios 使用GCD定时器

    定时器我们首先想到是NSTimer,不过NSTimer 有的时候会不准确,那么怎么处理呢?因为NSTimer 是在...

  • GCD定时器

    NSTimer 定时器易受 RunLoop模式影响导致定时器不准确。 dispatch_source_t time...

  • GCD定时器

    GCD定时器要比NSTimer时间准确,为什么?因为NSTimer是受RunLoop模式影响的,但如果设置Trac...

  • GCD定时器

    NSTimer 因为runloop的原因会导致不准确。所以我们可以用GCD定时器 确实很简单 我们封装下吧.h如下...

  • GCD定时器使用

    iOS中的常用定时器分为这几类: NSTimer CADisplayLink GCD定时器 选择GCD定时器原因:...

  • GCD定时器

    提到定时器,NStimer肯定是我们最为熟悉的。 但是NStimer有着很大的缺点,并不准确。 通俗点说,就是它该...

  • GCD定时器

    在开发的过程当中NSTimer是一个比较常用的类,用来计时,但是NSTimer有时候不准确,原因很简单,主要受Ru...

  • NSTimer精确度不准的原因

    一、造成NSTimer触发不准确的原因 在run loops循环过程中,被NSTimer触发事件阻塞了,导致循环不...

  • 无标题文章

    iOS NSTimer使用详解-开启、关闭、移除 定时器定时器详解ios定时器关闭定时器NSTimer 1、要使用...

网友评论

    本文标题:NSTimer定时器有时候不准确的原因

    本文链接:https://www.haomeiwen.com/subject/mrijhktx.html