美文网首页iOS开发 - 底层原理总结2021疑难解惑
简单明了认识iOS中的RunLoop (持续更新,常学常新,精益

简单明了认识iOS中的RunLoop (持续更新,常学常新,精益

作者: 非洲小白猿 | 来源:发表于2019-06-21 23:40 被阅读3次

为了常学常新,精益求精,我的所有文章都会持续更新

  • 为了简单明了的认识RunLoop, 本篇文章不讲述RunLoop的使用, 只讲述RunLoop的认识, 关于RunLoop的使用, 请看我的这篇文章iOS中RunLoop的使用 为了更好的理解RunLoop, 可以结合来看

一、RunLoop是什么 ?

  • 顾名思义, RunLoop就是运行循环, 它在程序运行过程中交替循环进行一些活动

  • RunLoop就像这幅图, 循环交替进行着这样的活动 : (来砖了)搬砖->(搬完了)睡觉->(来砖了)搬砖->(搬完了)睡觉......

RunLoop.png
  1. RunLoop搬的砖是什么?
    1. App中的事件响应、手势识别、界面刷新
    1. 发送的网络请求, 线程间的通信
    1. AutoreleasePool释放对象
    1. 定时器的工作、PerformSelector
    1. GCD Async Main Queue

二、RunLoop有什么用 ?

  1. 维持程序的生命
  • RunLoop是iOS程序的生命, 没有RunLoop, iOS程序就没法一直活下去.

  • 没有RunLoop的程序代码就像写在dispatch_once中的一段代码,一次性执行完就没有然后了, 表现在App中, 可能就是App启动完成后, 就会自动退出

  • 我们写的iOS程序之所以都能够维持生命,是因为程序刚开始的时候,主线程为我们自动创建了RunLoop

  • 子线程不会为我们自动创建RunLoop, 所以创建的子线程执行完任务就会销毁. 但有时候需要经常用到子线程, 为了优化性能, 就会在开启子线程的时候创建RunLoop, 让子线程一直活着, 有事做事, 没事休眠(AFN中就有这么做)

  1. 充分利用资源和节约资源
  • RunLoop 使得程序能在有事做的时候做事(尽力做事,充分利用资源),没事做的时候就休息(尽量节约资源,不会浪费资源瞎折腾)

三、RunLoop的循环是怎样的 ?

程序的持续存活, 其实是系统在不断的调用RunLoop, RunLoop在休眠的时候也是需要资源维持的,
不过这种维持睡眠需要的资源很少,就好像我们人一样,白天搬砖需要的资源比晚上睡觉需要的资源多,
但并不是不需要资源.为了维持程序生命,这点消耗是必须的

RunLoop的循环可以用下图来表示, 我们iOS程序一启动, 主线程就为我们创建了RunLoop, 开始了这样的循环

RunLoop的循环.png
Source0: 触摸事件处理, performSelector: onThread
Source1: 基于Port的线程间通信, 系统事件捕捉
Timers: NSTimer, performSelector: withObject: afterDelay:
Observers: 用于监听RunLoop的状态, UI刷新, Autorelease pool

RunLoop在iOS中的重要性是如此显而易见, iOS中的很多东西都跟它有着千丝万缕的关系, 关于这些, 可以通过我的iOS中RunLoop的使用这篇文章来了解

相关文章

  • 简单明了认识iOS中的RunLoop (持续更新,常学常新,精益

    为了常学常新,精益求精,我的所有文章都会持续更新 为了简单明了的认识RunLoop, 本篇文章不讲述RunLoop...

  • 【iOS开发】一些不错的文章博客整理

    持续更新... RunLoop ibireme深入理解RunLoop Block 声明Block 组件化 iOS组...

  • 2018-12-06

    苟日新,我常学,常学常新

  • RunLoop相关

    iOS底层原理总结 - RunLoop解密 Runloop Runloop是一种在当前线程,持续调度各种任务的运行...

  • 生活,常学常新!

    这个季节,我喜欢吃青团,清明果,以及蒿子粑粑。 它们都要用到一种植物——艾蒿,但是很遗憾,我不认识。 惊蛰一过,野...

  • 最全的iOS面试资料

    iOS-InterviewQuestion-collection 持续更新中......

  • iOS之RunLoop详解与实践

    目录 -RunLoop的概念 -RunLoop逻辑与实现 -RunLoop在iOS中运用 -RunLoop实践 -...

  • iOS RunLoop详解

    一.RunLoop介绍 1.概念 RunLoop是一个运行循环,正是因为RunLoop,IOS才可以保持程序的持续...

  • NSRunLoop

    前言 RunLoop的初期学习总结,后续会持续研究更新。 一、Runloop定义及作用 1. 什么是Runloop...

  • 认识互加·常思常新

    ​网络环境下的新学习方式构建与实践研究 认识互加,常思常新 摘要 《说文》:“新取木也。”木有取去复萌之力,故新有...

网友评论

    本文标题:简单明了认识iOS中的RunLoop (持续更新,常学常新,精益

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