美文网首页
1.Runloop简介

1.Runloop简介

作者: 白开了杯水 | 来源:发表于2021-09-27 10:24 被阅读0次
RunLoop

运行循环,在程序运行过程中循环做一些事情

用伪代码来表示的话,就是一个do while死循环,大概如下

        int retVal = 0;
        do {
            // 睡眠等待消息
            int message = sleep_and_wait();
            // 处理消息
            retVal = process_message(message);
        } while (0 == reValue)

直接窥探RunLoop源码,找到CFRunLoop文件,这里说明一下NSRunLoop和CFRunLoopRef的区分

  • NSRunLoop是oc的封装,CFRunLoopRef是c的封装,它们都可以来访问和使用runloop
  • NSRunLoop是基于CFRunLoopRef的一层OC包装

继续看源码,我们找到CFRunLoop的定义如下

CFRunLoop的定义源码

主要看图中红框的部分,可以得出以下结论

  • 一个RunLoop包含一个线程,一一对应关系
  • 一个RunLoop多种mode(模式),但当前模式只能是其中一中

模式究竟是什么?可以继续窥探它的源码

CFRunLoopMode的定义源码

代码可能有点抽象,把它们画成图大概如下

RunLoop结构图

那么它究竟是怎么运作的呢?首先我们要来了解下mode,在RunLoop中有多重mode,开发用到的主要是以下几个

  • kCFRunLoopDefaultMode:默认模式,一般主线程在这个模式下运行
  • UITrackingRunLoopMode : 界面跟踪 Mode,用于 ScrollView 追踪触摸滑动,保证界面滑动时不受其他 Mode 影响
  • kCFRunLoopCommonModes:公用模式,比如你的代码想在UITrackingRunLoopMode和kCFRunLoopDefaultMode模式下都运行,那么就可以选择common mode

主要还是看红框部分,他们的介绍如下

  • name:模式名称
  • sources0:处理一些普通的代码
    - 触摸事件处理
    - performSelector:withObject:
  • sources1:处理一些普通的代码
    - 基于Port的线程间通信
    - 系统事件捕捉
  • timers:处理定时器
    - NSTimer
    - performSelector:withObject:afterDelay
  • observers:处理通知
    - 用于监听Runloop的状态
    - UI刷新(BeforeWaiting)
    - autoRelease pool

说到这里,可能会有疑问,这些东西究竟是干什么的,有什么用呢?

相关文章

  • 1.Runloop简介

    RunLoop 运行循环,在程序运行过程中循环做一些事情 用伪代码来表示的话,就是一个do while死循环,大概...

  • 2.IOS之Runloop使用

    1.Runloop初体验 2.目录结构 3.RunLoop 的概念

  • 非常值得看的文章集合,会持续更新

    1.runloop 2.架构1、架构2、架构3、架构4、架构5

  • 初探Runloop

    1.runloop是什么? runloop 是一个运行循环(死循环); return UIApplicationM...

  • OC部分原理参考

    1.RunLoop 深入理解RunLoopRunLoop 视频RunLoop第一讲 视频RunLoop实战 视频 ...

  • 对RunLoop的一点理解

    1.RunLoop与dispatch的关系 1.在__CFRunLoopRun函数中,用dispatch_sour...

  • runloop

    1.RunLoop的应用Runloop应用 2.深入理解RunLoop 2.动态计算UITableViewCell...

  • runloop 介绍

    iOS面试题之runloop 阅读目录 1.runloop是什么/runloop的概念? 2.NSRunLoop ...

  • iOS 中的 Runloop

    1.Runloop基础知识 1.1 字面意思 a 运行循环 b 跑圈 1.2 基本作用(作用重大) a 保持...

  • iOS之RunLoop篇

    1.RunLoop基础知识 1.1 字面意思 a 运行循环 b 跑圈 1.2 基本作用(作用重大) a 保持...

网友评论

      本文标题:1.Runloop简介

      本文链接:https://www.haomeiwen.com/subject/bscrgltx.html