美文网首页
从计时器到runloop

从计时器到runloop

作者: 愤怒的牛牛 | 来源:发表于2019-05-10 11:08 被阅读0次

1.计时器初始化方法

1.1 快速初始化方式

+ (NSTimer*)scheduledTimerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void(^)(NSTimer*timer))blockAPI_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0));

初始化之后便可以直接在回调中写需要做的事情,不需要把计时器添加到 runloop 中,因为默认已经把它添加到当前 runloop 中了.

1.2 自定义初始化方式

+ (NSTimer*)timerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void(^)(NSTimer*timer))blockAPI_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0));

自定义初始化之后,需要在回调中写完需要做的事情之后,还需要手动把计时器添加到 runloop 中.

2.Runloop  - 运行循环

2.1 循环 和 递归 的区别?

1.函数调用函数叫做递归,函数调用会开辟栈空间,所以死递归会崩溃.

2.循环是重复执行,循环不消耗内存,死循环不会崩溃.

2.2 Runloop 死循环的目的所在?

1.保证程序不挂.

2.监听事件.(触摸,时钟,网络)

3.特性:如果没有事件发生,会让程序进行休眠(减少性能损耗)

2.3 Runloop 的五种模式?

(1)默认模式 (列表滚动的时候不会处理计时器)

NSDefaultRunLoopMode

(2)UI模式:1.优先级最高 2.只能被触摸事件所触发 (列表滚动的时候打印,松手的时候执行计时器)

UITrackingRunLoopMode

(3)站位模式:其实就是 默认模式 + UI模式 

相当于 UITrackingRunLoopMode + NSDefaultRunLoopMode

NSRunLoopCommonModes

(4)内核事件模式:内核事件的处理  用不着

(5)初始化模式:程序一运行的时候执行  用不着

3.计时器加载到 runloop 的时候需要设置 mode

[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:UITrackingRunLoopMode];

4. Demo 地址 

Demo 下载地址

愤怒的牛牛的简书

愤怒的牛牛的新浪博客

愤怒的牛牛的GitHub

相关文章

  • 从计时器到runloop

    1.计时器初始化方法 1.1 快速初始化方式 + (NSTimer*)scheduledTimerWithTime...

  • Swift开发DispatchSourceTimer倒计时

    倒计时是个很常用的东西,创建倒计时要把计时器放入到runloop 当中,因为计时器也是一种资源,资源只有放入到ru...

  • iOS几种常见计时器

    1,最常见的计时器NSTimer (默认放到defaultModel的runloop中,会受到runloop的影响...

  • 系统框架--52:NSTimer会保留其目标对象

    NSTimer 计时器要和runloop相关联,runloop会触发任务。创建NSTimer时,可以将其“预先安排...

  • RxSwift-Observable-interval初识

    Observable的interval可以产生一个计时器,并且这个计时器不熟Runloop影响,那它究竟是何方神圣...

  • ios开发-NSTimer计时器

    作用:用来定时重复执行某件事件注意:计时器需要放入到runloop中才能有用 NSTimer常用方法 //以上2个...

  • 2018-10-15

    NSTimer与RunLoop的关系 什么是NSTimerNSTimer 官方的概念意思是:计时器提供执行延迟动作...

  • iOS之NSTimer自定义停留时间后开启

    本文首发地址 1:首先熟悉一下NSTimer的常用属性 这个是唯一一个可以将计时器从runloop中移出的方法。 ...

  • 面试问题总结

    Runtime理解。 Runloop理解,结合计时器。 GCD常用的方法。 GCD的原理。 KVO和KVC的实现原...

  • RunLoop从入门到进阶

    一个线程一次只能执行一个任务,执行完毕后就会退出。如果需要一个机制,让线程能随时处理事件,处理完毕后并不退出,代码...

网友评论

      本文标题:从计时器到runloop

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