iOS的RunLoop简述

2020-01-16  本文已影响0人  秋风绿叶168

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

没有消息需要处理时,休眠以避免资源占用

这时从用户态转向内核态

有消息需要处理时,立刻被唤醒

这时从内核态转向用户态

RunLoop的数据结构:

NSRunLoop是CFRunLoop的封装,提供了面向对象的API

*CFRunLoop

*CFRunLoopMode

*Source/Timer/Observer

CFRunLoop

由pthread、crrentMode、modes、commonModes、commonModeltems成员构成

CFRunLoopMode

由name、sources0、sources1、observers、timers成员组成

CFRunLoopSource

CFRunLoopTimer

基于事件的定时器 和NSTimer是toll-free bridge的

CFRunLoopObserver

观测时间点:

RunLoop可以有多个Mode,每个model结构为sources1、observers、timers

commonMode的特殊性

NSRunLoopCommonModes

RunLoop处理流程:

image

<figcaption></figcaption>

注意

*线程是和RunLoop一一对应的

*自己创建的线程默认是没有RunLoop的

上一篇下一篇

猜你喜欢

热点阅读