美文网首页
RunLoop相关

RunLoop相关

作者: 内心强大的Jim | 来源:发表于2019-08-10 09:55 被阅读0次

iOS底层原理总结 - RunLoop
解密 Runloop

Runloop是一种在当前线程,持续调度各种任务的运行机制。

while(alive) {
    performTask() //执行任务
    callout_to_obsever() //通知外部,用于告知外部某个任务已被执行,或者是runloop当前处于什么状态。
    sleep() //休眠
}

performTask主要有

DoBlocks(),
DoSources0(),
DoSources1(),
DoTimers(),
DoMainQueue()

callout_to_obsever主要有

DoObservers-Timer,
DoObservers-Source0,
DoObservers-Activity(分为kCFRunLoopEntry,kCFRunLoopBeforeTimers,kCFRunLoopBeforeSources,kCFRunLoopBeforeWaiting,kCFRunLoopAfterWaiting,kCFRunLoopExit,kCFRunLoopAllActivities)

一个RunLoop包含若干个Mode,每个Mode又包含若干个Source、Timer、Observer。
每次RunLoop启动时,只能指定其中一个Mode,这个Mode被称作CurrentMode,如果需要切换Mode,只能退出RunLoop,在重新制定一个Mode进入,这样做主要是为了分割不同组的Source,Timer,Observer,让其互不影响。但是必须至少有一个Source或者Timer,如果Mode里没有任何Source0/Source1/Timer/Observer,RunLoop会立马退出

RunLoop有5种运行模式
1.kCFRunLoopDefaultMode: App的默认Mode,通常主线程是在这个Mode下运行
2.UITrackingRunLoopMode:界面追踪Mode,用于Scrollview追踪触摸滚动,保证界面滑动时不受其他Mode影响
3.UIInitializationRunLoopMode:在刚启动App时进入的第一个Mode,启动完成后就不再使用,会切换到kCFRunLoopDefaultMode
4.GSEventReceiveRunLoopMode:接受系统事件的内部Mode,通常用不到
5.KCFRunLoopCommonModes:这是一个占位用的Mode,作为标记kCFRunLoopDefaultMode和UITrackingRunLoopMode用,并不是一种真正的Mode

最后引用MrPeak的一张图:


rl00.png

相关文章

  • RunLoop

    RunLoop简单概述 RunLoop相关类 RunLoop逻辑处理 RunLoop实践 RunLoop简单概述 ...

  • iOS RunLoop(1)RunLoop简介

    iOS RunLoop(1)RunLoop简介iOS RunLoop(2)RunLoop相关类iOS RunLo...

  • iOS RunLoop(2)RunLoop相关类

    iOS RunLoop(1)RunLoop简介iOS RunLoop(2)RunLoop相关类iOS RunLo...

  • iOS RunLoop(3)RunLoop原理

    iOS RunLoop(1)RunLoop简介iOS RunLoop(2)RunLoop相关类iOS RunLo...

  • iOS RunLoop(4)RunLoop实战应用

    iOS RunLoop(1)RunLoop简介iOS RunLoop(2)RunLoop相关类iOS RunLo...

  • 深入浅出 RunLoop

    前言 文章主要分为四个部分 一、RunLoop 简介 二、RunLoop 相关接口 三、RunLoop 相关逻辑流...

  • 14-RunLoop-01

    一、RunLoop的认识 二、RunLoop对象 RunLoop源码: 三、RunLoop相关类 切换mode不会...

  • dailyLearning -- runLoop

    runLoop runLoop 对外的接口及相关类 runLoop 内部逻辑 runLoop 可以做啥 runLo...

  • RunLoop

    基本概念RunLoop相关类RunLoop的作用RunLoop和线程的关系RunLoop和autoreleasep...

  • RunLoop的介绍

    本文介绍的RunLoop包含以下几个点: 一、什么是RunLoop二、RunLoop对象三、 RunLoop相关的...

网友评论

      本文标题:RunLoop相关

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