Runloop原理及其应用

60 阅读1分钟

Runloop是什么?

在app启动之后,是什么在管理着任务的运行,当你的手点击屏幕之后,应用程序是如何识别到你的点击,并且进行对应的响应,这些都是runloop的运行机制在起着作用。本文将深入浅出的介绍runloop。

runloop就是一个对象,这个对象管理了其需要处理的事件和消息,并提供了一个入口函数来执行一个event loop的逻辑(线程在没有处理消息是,休眠以避免资源占用,在有消息到来时立刻被唤醒)。线程执行了这个函数之后,就会一直处于这个函数内部"接收消息->等待->处理"的循环中,直到这个循环结束(比如传入quit消息),函数返回。

线程和RunLoop是一一对应的,其关系是保持在一个全局的Dictionary里,线程刚创建是没有RunLoop,如果你不去主动获取,那它就一直不会有,RunLoop的创建是在第一次获取时,RunLoop的销毁是在线程结束时,你只能在一个线程的内部获取其RunLoop。

主线程的runloop:当我们运行一个应用程序,里面哪怕没有任何界面和功能的时候,系统都会帮我们自动起一个主线程的runloop。

其他线程的runloop会自动帮我们创建么?不会,其他线程的Runloop是懒加载的。