美文网首页
关于NSTimer的二三事

关于NSTimer的二三事

作者: BeStrongerrrrrr | 来源:发表于2018-08-01 15:56 被阅读9次

最近在面试,由于好长时间没有面试,不知道外面的世界,面试尽管做了充足的准备,可是还是会在一些问题上卡壳,在此记录一下吧,平时一知半解,现在正好做个梳理

今天的面试题是  NSTimer准么?为什么不准?

这有点经验的大家都知道不准,但是为什么不准呢,具体我们来说说

1.NStimer必须添加到runloop中才会被调用,而每个runloop都对应一个mode,如果timer不在在所指定的runloop中,那么timer就不会被触发

所以综上所述,timer不被触发的原因有三个:

a.没有添加到runloop中

NSTimer *timer = [NSTimer timerWithTimeInterval:5 target:self selector:@selector(timerAction)      userInfo:nil repeats:YES];//此种创建timer的方法必须需要手动添加到runloop中

    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.5 repeats:YES block:^(NSTimer * _Nonnull timer) {

        NSLog(@"timer执行了");

    }];//此种方法自动就将timer加到了主线程的runloop的NSDefaultRunLoopMode模式中

b.runloop当前的mode与timer指定的mode不一样

c.runloop是否运行,主线的runloop默认会被启动,模式为NSDefaultRunLoopMode  当滑动时切换至trackingMode  而我们自己起的线程,如果不获取是不会有runloop的,所以当在非主线程中添加timer   一定要执行以下语句将runloop运行起来

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:3]];

2.在timer指定的runloop中,如果正在执行一项耗时的连续运算,比如这项运算需要8s钟,而timer是每隔5s钟执行一次,那么此时的timer就会延时执行,比如正常应该在5s中执行,但是这个时候需要在这项耗时的运算结束后按照5s间隔开始执行,比如8s执行完以后呢,13s开始执行timer方法。

解决timer不准时方法:

1.另起一个线程,在此线程中开一个timer  例如:

相关文章

  • 关于NSTimer的二三事

    最近在面试,由于好长时间没有面试,不知道外面的世界,面试尽管做了充足的准备,可是还是会在一些问题上卡壳,在此记录一...

  • 关于NSArray的二三事

    关于NSArray的二三事

  • NSTimer

    深入NSTimer(iOS)iOS 中的 NSTimer关于NSRunLoop和NSTimer的深入理解

  • 关于String需要知道的二三事

    关于String需要知道的二三事 标签: Java基础 原文链接:关于String需要知道的二三事 转载请注明...

  • Controller销毁NSTimer释放的细节

    关于NSTimer释放和内存泄漏的问题。 @(NSTimer)[内存管理,NSTimer释放,循环引用] 首先需要...

  • 关于,二三事

    备忘一 16. 12 .末 真的已经很久不码字 平时想要说的想要写的,断断续续的存在了备忘录里和记事本里 专门想要...

  • 关于this的二三事

    什么是this this是JS中一个非常重要的关键字。this 就是你 call 一个函数时,传入的 contex...

  • NSTimer CADisplayLink GCD计时器的深入探

    关于NSTimer CADisplayLink GCD计时器的杂谈 ** NSTimer ** iOS中最常用的定...

  • 关于NSTimer

    NSTimer 一个计时器,不算常用但也算基础。我想每个开发iOS都应该知道,所以我一般会把他当作一个面试题。可以...

  • 关于NSTimer

    NSTimer使用方式 常用的创建方式有 1+ (NSTimer *)timerWithTimeInterval:...

网友评论

      本文标题:关于NSTimer的二三事

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