iOS - Runloop的运行逻辑

文章目录

  • iOS - Runloop的运行逻辑
    • 1. 苹果官方的Runloop执行图
    • 2. Mode里面的东西
      • 2.1 Source0
      • 2.2 Source1
      • 2.3 Timers
      • 2.4 Observers
    • 3. 执行流程
      • 3.1 注意点
    • 4. Runloop休眠

iOS - Runloop的运行逻辑

1. 苹果官方的Runloop执行图

2. Mode里面的东西

2.1 Source0

  • 触摸事件处理
  • performSelector:onThread:

2.2 Source1

  • 基于Port的线程间通信
  • 系统事件捕捉

系统事件捕捉:从用户点击屏幕到应用处理触摸事件,先是由Source1捕捉屏幕点击事件(系统事件),然后再包装成Source0处理触摸事件

2.3 Timers

  • NSTimer
  • performSelector:withObject:afterDelay:

2.4 Observers

  • 用于监听RunLoop的状态
  • UI刷新(BeforeWaiting)
  • Autorelease pool(BeforeWaiting)

UI刷新和Autorelease pool清理自动释放对象,都是在Runloop即将进入睡眠状态时触发(kCFRunLoopBeforeWaiting)

3. 执行流程

  1. 通知Observers:进入Loop
  2. 通知Observers:即将处理Timers
  3. 通知Observers:即将处理Sources
  4. 处理Blocks
  5. 处理Source0(可能会再次处理Blocks)
  6. 如果存在Source1,就跳转到第8步
  7. 通知Observers:开始休眠(等待消息唤醒)
  8. 通知Observers:结束休眠(被某个消息唤醒)
    1. 处理Timer
    1. 处理GCD Async To Main Queue
    1. 处理Source1
  1. 处理Blocks
  2. 根据前面的执行结果,决定如何操作
    1. 回到第02步
    1. 退出Loop
  1. 通知Observers:退出Loop

3.1 注意点

GCD很多东西不依赖于Runloop,它们是分开的。但是GCD子线程回到主线程的时候,是依赖于Runloop的

dispatch_async(dispatch_get_main_queue(), ^{NSLog(@"");
});

4. Runloop休眠

Runloop休眠,是通过系统内核API,不同于while循环那种,而是真正地进入休眠状态

@oubijiexi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/779756.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中企出海,在地合规、境外支出管理,该怎么做?

从组团出海抢订单,到“新三样”拉动外贸新增长......"出海",已经成了中国企业的关键战略。但企业出海水深浪高,由于在全球税财法管控体系上缺乏经验,在地合规风险、内控管理漏洞、资金支出隐患等方面可能“陷阱”重重。 基于此,分贝通联合安永,以“破局!中国企业出海…

MTransE阅读笔记

Multilingual Knowledge Graph Embeddings for Cross-lingual Knowledge Alignment 用于交叉知识对齐的多语言知识图谱嵌入(MTransE) Abstract 最近的许多工作已经证明了知识图谱嵌入在完成单语知识图谱方面的好处。由于相关的知识库是用几种不同的语言构建的,因…

Java代码基础算法练习-求偶数和-2024.03.29

任务描述: 编制程序,输入n个整数(n从键盘输入,n>0,整数取值范围:0~1000),输出这n个 数当中的偶数和。 任务要求: 代码示例: package M0317_0331;import…

集合,排序查找算法,可变参数

文章目录 集合Set集合TreeSet集合 Map集合概述特点子类及其底层数据结构常用方法遍历 数据结构常见的数据结构二叉树 可变参数介绍格式注意 Collections工具类方法 排序查找算法冒泡排序介绍原理注意代码 选择排序介绍原理规律代码 二分查找前提介绍原理注意代码 集合 Set集合 …

大话设计模式之代理模式

代理模式(Proxy Pattern)是一种结构型设计模式,它允许通过代理对象控制对另一个对象的访问。代理对象充当客户端和实际对象之间的中介,客户端通过代理对象间接访问实际对象,从而可以在访问控制、缓存、延迟加载等方面提…

蓝桥杯刷题第四天

思路: 这道题很容易即可发现就是简单的暴力即可完成题目,我们只需满足所有数的和为偶数即可保证有满足条件的分法,同时也不需要存下每个输入的数据,只需要知道他是偶数还是奇数即可,因为我们只需要偶数个奇数搭配在一块…

如何使用命令行对RK开发板进行OpenHarmony版本烧录?

问题 在 OpenHarmony 自动化测试环境中,需要对流水线上的 RK 设备进行烧录,图形工具只能人工操作,那么有什么方法可以纯命令行进行自动化烧录呢? 思路 我们发现 RK 开发板实际是使用 upgrade_tool 的执行文件进行烧录的&#x…

公众号文章怎么写?手把手教你

公众号文章写作是讲究技巧和经验的,按照爆款文章的逻辑和结构走,你也能写出精彩的公众号推文,本文伯乐网络传媒将为你揭秘公众号文章的写作之道,纯干货,建议收藏起来慢慢看。 一、文章结构安排 1. 标题策划&#xff1…

使用Leaflet.rotatedMaker进行航班飞行航向模拟的实践

目录 前言 一、Leaflet的不足 1、方向插件 2、方向控制脚本说明 二、实时航向可视化实现 1、创建主体框架 2、飞机展示 3、位置和方位模拟 三、成果及分析 1、成果展示 2、方向绑定解读 总结 前言 众所周知,物体在空间中的运动(比如飞行、跑步…

Windows11 使用 VirtualBox 安装创建 Ubuntu虚拟机

〇、背景 开发者大比例习惯都是Windows下编辑代码,比如使用Windows的Visual Studio Code进行代码的开发。但不管是AOSP还是鸿蒙开发,目前都不支持windows本地环境编译的,建议使用Ubuntu操作系统环境对源码进行编译。 因此,没有U…

redis集群配置(精华版):主从复制模式

主从复制模式 概念:作用:为什么使用集群:动手实操1、环境准备2、配置redis.conf配置文件3、再次查看主从节点信息4、验证主从模式 概念: ​ 主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器…

Manjaro 安装全新 Linux 版微信,从此告别 Wine

目前已经基本上使用 Manjaro 来工作,而工作离不开微信作为日常的工作沟通工具。因为微信官方一直没有 Linux 版本的,所以之前都只能够使用 Wine 版本,然后踩了不少坑,但还算能勉强使用。 最近听说微信终于要发布 Linux 版本的&am…

网络层/数据链路层/其他协议/ARP/NAT

网络层 IP协议 前置认识 我们之前详谈过TCP协议,TCP协议主要是提供一种可靠的传输策略,但是并不能直接将报文发送给对方主机,而IP协议的本质就是提供一种将数据跨网络从A主机送到B主机的能力,而用户需要的是一种将数据 可靠的 跨…

【数据结构】新篇章 -- 顺序表

🌈 个人主页:白子寰 🔥 分类专栏:python从入门到精通,魔法指针,进阶C,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~ 💡 坚持创作博文…

银行监管报送系统介绍(八):银行业大额交易和可疑交易报告数据报送

依据《金融机构大额交易和可疑交易报告管理办法》: 第五条 金融机构应当报告下列大额交易: (一)当日单笔或者累计交易人民币5万元以上(含5万元)、外币等值1万美元以上(含1万美元)的…

AI大模型引领金融创新变革与实践【文末送书-46】

文章目录 AI大模型的定义与特点AI大模型在金融领域的应用 01 大模型在金融领域的 5 个典型应用场景02 大模型在金融领域应用所面临的风险及其防范03 AIGC 技术的科林格里奇困境04 金融机构使用 AIGC 技术的 4 条可能路径AIGC重塑金融:AI大模型驱动的金融变革与实践…

农学院智慧农业产教融合基地解决方案

第一章 背 景 1.1国际数字农业发展概况 随着全球信息化、智能化技术的快速发展,数字农业作为现代农业发展的重要方向,正日益受到国际社会的广泛关注。数字农业依托物联网、大数据、云计算、人工智能等现代信息技术,实现农业生产全过程的智能…

上采样技术在语义分割中的应用

目录 概要 一、概述 二、实现方法 1.转置卷积 2.反池化 3.双线性插值法 三、在经典网络中的的应用 1.U-Net 2.FCN 总结 概要 上采样是用于深度学习中提高语义分割精度的技术,可以实现图像放大和像素级别标注 一、概述 神经网络的基本结构为:…

我是如何在学术界占有一席之地的——专注于我的写作

罗伯特纽贝克 “作为一个移民,你是怎么发表这么多文章的?”意识到我不是以英语为母语的人,当我去年面试教职时,人们无数次问过这个问题。我知道披露我的挣扎不太可能让我找到工作,所以我会笑着说:“我喜欢…

【c 语言 】malloc函数详解

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:C语言 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步&…