程序都是从 main 函数开始启动的,随着 main 函数里执行体结束之后 main 函数也会结束,程序也会退出。但是为什么程序可以保持一个活跃的状态呢?
在 main 函数的 UIApplicationMain 内部会启用一个线程循环,也就是 RunLoop。它可以不断的接收一些事件,比如屏幕点击,滑动等,处理完之后继续处于一个等待的状态。下面详细介绍一下 RunLoop
什么是RunLoop?
RunLoop 是通过内部维护的事件循环来对事件/消息进行管理的一个对象(状态的切换)
- 没有消息需要处理时,休眠以避免资源占用
-
有消息需要处理时,立刻被唤醒
用户态: 应用程序一般都运行在用户态上
内核态: 系统调用,需要使用到一些操作系统以及一些底层内核指令或者API
具体包括 RunLoop 的数据结构和详细说明,请看这里 Runloop摘录,剖析的很详细,就不重复了。
网友评论