前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RunLoop这么会来事儿,与它的“对象”们息息相关!!!

RunLoop这么会来事儿,与它的“对象”们息息相关!!!

作者头像
CC老师
发布2019-01-23 17:21:51
3300
发布2019-01-23 17:21:51
举报
文章被收录于专栏:HelloCode开发者学习平台

程序有了RunLoop,“短命”变“长寿”了;事件响应、手势识别、界面更新、定时器等都离不开它,怎么强大的机制,离不开它的“对象”们。

回正题,要深入了解RunLoop,我们需要了解它的相关类,或者更准确的说是相关的结构体。

CF框架源码是开源的, 所以RunLoop的相关结构体, 我们都是可以看见的。

与RunLoop相关的类, 主要有5个:

CFRunLoopRef

CFRunLoopModeRef

CFRunLoopSourceRef

CFRunLoopTimerRef

CFRunLoopObserverRef

它们之间的关系,见下图....

想要深入了解它们之间的关系,源码了解一下....

CFRunLoopRef

CFRunLoopModeRef

CFRunLoopSourceRef

CFRunLoopTimerRef

CFRunLoopObserverRef

从RunLoop相关结构体之间关系图,以及它们具体的结构体源码,你看出了什么?

聪明如你,应该可以看出它们之间的小九九了吧? 来,小结一下:

  • 一个RunLoop对应着一条线程
  • 一个RunLoop包含多个Mode,每个 Mode 又包含若干个 Source/Timer/Observe
  • Source/Timer/Observer又叫mode item。不同mode下的mode item互不影响
  • RunLoop运行过程中,只选择一种模式运行
  • 切换Mode,程序退出当前RunLoop,再重新指定Mode执行(这点应该看不出。。。待续。。)

这是RunLoop系列的第三篇文章,下篇会继续探究RunLoop, 敬请期待...

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HelloCode开发者学习平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档