问题1: 什么是RunLoop?
RunLoop
是通过内部维护的事件循环
来对事件/消息
进行管理的一个对象
- 没有消息需要处理时, 休眠以避免资源占用
- 有消息需要处理时, 立刻被唤醒
问题2: RunLoop状态切换
runloop状态切换-
没有消息处理时候,
用户态
切换到内核态
, 休眠以避免资源占用 -
有消息处理时候,
内核态
切换到用户态
, 立刻被唤醒
问题3: main函数为什么会常驻不会退出
在main
中会调用UIApplicationMain
, 函数内部会启动主线程的运行循环RunLoop
, 可以不断接受消息, 对事件处理等待, 其中这个循环不是简单for循环或者while循环, 其实内部是用户态
→ 内核态
, 内核态
→用户态
切换
网友评论