Runloop应用

2020-09-12  本文已影响0人  凌云01

1、什么是RunLoop?
2、main函数为什么一直不退出呢?
3、RunLoop是怎么维护的循环?

什么是RunLoop?
RunLoop是通过内部维护的一个事件循环来对事件/消息进行管理的一个对象。
目的是:

main函数为什么能保持不退出呢?
因为在main函数启动后,在内部会调用UIApplicationMain函数,在这个函数内部实际上会启动主线程的一个运行循环即RunLoop,RunLoop可以接受一些事件/消息,并对这些事件/消息进行处理,处理完之后再继续进行等待,这里循环不单单的是一个while循环,而是用户态和内核态之间的相互切换。

RunLoop是怎么维护的循环?
RunLoop是CFRunLoop的封装,提供面向对象的API。
在RunLoop中有五大类

CFRunLoop.png

其中

CFRunLoopObserver
检测时间点:

RunLoop与线程时一一对应的关系,RunLoop与mode是一对多,mode和Source/Timer/Observer是一对多


CFRunLoopMode.png

commonMode特殊性:

事件循环的实现机制
点击App图标,系统是如何进行启动,休眠和退出的?

RunLoop事件循环机制.jpg

RunLoop核心

RunLoop核心.jpg
上一篇下一篇

猜你喜欢

热点阅读