有关RunLoop

2019-03-28  本文已影响0人  TAsama

1. 什么是RunLoop?

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

没有消息需要被处理时, 系统会将当前线程所有权转化为内核态, 当有消息需要处理时, 系统会将当前线程的状态切换回用户态
所以RunLoop的循环并不是一个单纯的死循环, 而是通过状态切换, 达到没有消息是休眠, 有消息时唤醒的这样一个事件循环机制.

RunLoop的数据结构

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

CFRunLoop
CFRunLoop的数据结构
CFRunLoopMode的数据结构
CFRunLoopObserver

观测时间点

各个数据结构之间的关系
RunLoop中各个数据结构之间的关系

可以看到, 一个RunLoop可以有多个Model, 而每个Model中又可以存放多个不同的事件, 我们在切换Model时, 其他Model的事件将不会被响应.

CommonMode的特殊性

NSRunLoopCommonModes

RunLoop与多线程

上一篇 下一篇

猜你喜欢

热点阅读