IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> iOS 中的RunLoop -> 正文阅读

[移动开发]iOS 中的RunLoop

写个伪代码,我们的日常:

while(活着)
	有事干了 = 我睡觉去了();
	if (搬砖){
		搬砖()
	}else if (泡妞){
		泡妞()
	}else{
	吃饭()
	}
}

为什么要有RunLoop?
1、使程序一直运行
2、使程序在那些时候处理那些Event
3、调用结偶(滑动的时候不能卡住、消息队列)
4、节省CPU时间请添加图片描述
于RunLoop有关系的几个东西
NSTimer、UIEvent、Autorelease
CADisplayLink、CATransition、CAAnimation
dispatch_get_main_queue()
NSURLConnection、AFNetWorking请添加图片描述
请添加图片描述
请添加图片描述
CFRunLoopSource
Source是数据源RunLoop的抽象类
RunLoop定义了两个Version的Source

? Source0 :非基于Port的 处理事件,什么叫非基于Port的呢?就是说你这个消息不是其他进程或者内核直接发送给你的。一般是APP内部的事件, 比如hitTest:withEvent的处理, performSelectors的事件.Swift ->CFRunLoopSourceContext

Source1 :基于mach_Port的,来自系统内核或者其他进程或线程的事件,可以主动唤醒休眠中的RunLoop(iOS里进程间通信开发过程中我们一般不主动使用)。mach_port大家就理解成进程间相互发送消息的一种机制就好, 比如屏幕点击, 网络数据的传输都会触发sourse1。如 CFMachPort、

CFMessagePort Swift ->CFRunLoopSourceContext1

CFRunLoopMode
NSDefaultRunLoopMode 默认状态、空闲状态
UITrackingRunLoopMode 滑动ScrollView时
UIInitializationRunLoopMode 私有App启动的时候
NSRunLoopCommonModes

extension CFRunLoopMode {
    public static let defaultMode: CFRunLoopMode!
    public static let commonModes: CFRunLoopMode!
}

经典问题?

页面上有Timer ,在滚动ScrollView的时候Timer不会跑!
设置为commonModes

滑动时RunLoopModel的切换(堆栈中有一个pushRunLoopMode和popRunLoopMode的过程)
NSDefaultRunloopMode -> UITrackingRunLoopMode -> NSDefaultRunloopMode

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-23 12:28:54  更:2021-11-23 12:30:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:18:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码