内容简介:什么时候使用
Runloop
是事件接收和分发机制的一个实现。是线程相关的基础框架的一部分。一个Runloop就是一个事件处理的循环,用来不停的调度工作及处理输入事件。使用runloop的目的就是让你的线程
RunLoop
的主要目的:
保证程序执行的线程不会被系统终止,如果没有RunLoop,UIApplicationMain函数执行完毕之后将直接返回,就是说程序一启动然后就结束,在有工作的时候忙于工作,而没有工作的时候处于休眠状态, 复制代码
什么时候使用 Runloop
?
当需要和该线程进行交互的时候才会使用Runloop. 复制代码
Runloop Mode
一个 Runloop
可能有几个mode
Runloop Mode
实际上是 Source,Timer 和 Observer 的集合,不同的 Mode 把不同组的
Source ,
Timer 和
Observer 隔绝开来。
Runloop` 在某个时刻只能跑在一个 Mode 下,处理这一个 Mode 当中的 Source,Timer 和 Observer。
苹果文档中提到的 Mode 有五个,分别是:
NSDefaultRunLoopMode
:默认的mode,正常情况下都是在这个mode NSConnectionReplyMode
NSModalPanelRunLoopMode
NSEventTrackingRunLoopMode
:使用这个Mode去跟踪来自用户交互的事件(比如UITableView上下滑动) NSRunLoopCommonModes
iOS 中公开暴露出来的只有 NSDefaultRunLoopMode
和 NSRunLoopCommonModes
。 NSRunLoopCommonModes
实际上是一个 Mode 的集合,默认包括 NSDefaultRunLoopMode
和 NSEventTrackingRunLoopMode
。
Source
即可以唤醒 Runloop
的一些事件。比如用户点击了屏幕,就会创建一个input source。
source0 source1
Timer
我们经常用的 NSTimer
就属于这一类。
Observer
某个observer可以监听 runloop
的状态变化,并作出一定反应。
RunLoop运行流程
经典大图
没有事情的时候, Runloop
处于休眠状态。当外部source将其唤醒后,它会依次处理接收到的timer/source,然后再次进入休眠。
常见的面试题:
Runloop
和线程是什么关系?
每条线程都有唯一的一个与之对应的RunLoop对象;主线程的RunLoop已经自动创建,子线程的RunLoop需要主动创建;RunLoop在第一次获取时创建,在线程结束时销毁
Runloop
的mode作用是什么?
指定事件在运行循环中的优先级的,
线程的运行需要不同的模式,去响应各种不同的事件,去处理不同情境模式。(比如可以优化tableview的时候可以设置UITrackingRunLoopMode下不进行一些操作,比如设置图片等。)
以 +scheduledTimerWithTimeInterval:
的方式触发的 timer
,在滑动页面上的列表时, timer
会暂停回调, 为什么?
滑动scrollView时,主线程的 RunLoop
会切换到 UITrackingRunLoopMode
这个Mode,执行的也是 UITrackingRunLoopMode
下的任务(Mode中的item),而timer是添加在 NSDefaultRunLoopMode
下的,所以timer任务并不会执行,只有当 UITrackingRunLoopMode
的任务执行完毕,runloop切换到 NSDefaultRunLoopMode
后,才会继续执行timer。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 精选前端核心面试题及解答(基础篇)
- 三道 google 风格 git 面试题及其解答
- 2019初中级移动端社招面试解答(上)
- 金三银四,冲击大厂,你值得拥有的一份2019初中级移动端社招面试总结+解答
- JVM问题及解答
- Hbase问题汇总与解答
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Microformats
John Allsopp / friends of ED / March 26, 2007 / $34.99
In this book, noted web developer and long time WaSP member John Allsop teaches all you need to know about the technology: what Microformats are currently available and how to use them; the general pr......一起来看看 《Microformats》 这本书的介绍吧!
HTML 压缩/解压工具
在线压缩/解压 HTML 代码
在线进制转换器
各进制数互转换器