美文网首页
谈一谈对RunLoop的理解

谈一谈对RunLoop的理解

作者: 鸡蛋不吃黄 | 来源:发表于2017-03-25 08:35 被阅读0次

Runloop理解:

每个线程都有一个消息循环—>消息循环监听着输入事件—>事件有两种类型—>输入源和定时源—>将创建好的输入源以确定的模式加入消息循环中 —> 由于子线程消息循环默认不开启, 所以线程中无法监听到是否有方法需要其执行,就会销毁,导致方法执行不到 —> 需要开启子线程的消息循环 —> 三种开启方法, run开启了无法关闭, runUntilDate虽然开启了确定的时间也不靠谱 , 苹果提供了判断模式,点击run 右边帮助栏查找. RunLoop是时间循环,负责监听事件,保证应用程序持续运行。监听到事件后,向注册的对象发送消息,从而实现事件响应

Runloop(消息循环)的目的

保证程序不退出负责处理输入事件

事件类型如下:
如果没有事件发生, 会让程序进入休眠状态,通俗的讲,runloop主要就是为保证程序在执行过程中不会被系统终止,确保不断的监听用户交互行为

runloop的运行循环模式:

有5种模式
第一种就是默认模式: 也就是一般的方法调用使用的模式。
第二种就是跟踪模式: 用于scrollview追踪触摸滑动, 使其不受其他模式的影响, 可以共存。
第三种就是当程序启动时第一次开启的运行循环模式。
第四种的话 一般开发中没听到过。没有去研究过。
第五种是一种占位模式。不过没什么太大用处。
系统默认注册了5个Mode:

NSDefaultRunLoopMode:App 的默认 Mode,通常主线程是在这个 Mode 下运行(默认情况下运行)
UITrackingRunLoopMode:界面跟踪 Mode,用于 ScrollView 追踪触摸滑动,保证界面滑动时不受其他 Mode 影响(操作 UI 界面的情况下运行)
UIInitializationRunLoopMode:在刚启动 App 时进入的第一个 Mode,启动完成后就不再使用
GSEventReceiveRunLoopMode:接受系统事件的内部 Mode,通常用不到(绘图服务)
NSRunLoopCommonModes:这是一个占位用的 Mode,不是一种真正的 Mode (RunLoop无法启动该模式,设置这种模式下,默认和操作 UI 界面时线程都可以运行,但无法改变 RunLoop 同时只能在一种模式下运行的本质)

Runloop本质:

其实是一个结构体。里面有observer。nstimer。source(监听事件的)等等

相关文章

  • 谈一谈对RunLoop的理解

    Runloop理解: 每个线程都有一个消息循环—>消息循环监听着输入事件—>事件有两种类型—>输入源和定时源—>将...

  • 对runloop的理解

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

  • iOS开发基础之Runloop

    文章内容来自:深入理解RunLoop 官方文档-Runloop Runloop概念 Runloop本身是一个对...

  • Runloop分析

    RunLoop 参考:深入理解RunLoop ibireme:《深入理解RunLoop》 Runloop 的概念 ...

  • 第十篇:Objective-C 知识回顾RunLoop

    10.1.RunLoop 的概念 问题一:请用你对 RunLoop 的理解,描述一下什么是 RunLoop? Ru...

  • iOS面试题/知识点

    1、对runloop的理解2、对setNeedsLayout ,layoutIfNeeded,setNeedsDi...

  • 12.runloop问题

    问题 1.个人对runloop的理解2.runloop 运行逻辑3.监听runloop 的模式4.获取当前子线程中...

  • Runloop总结

    深入理解RunLoopMac&iOS之多线程CFRunLoop运用 RunLoop 的概念 runloop是一个对...

  • iOS RunLoop理解

    在网上看到一篇对RunLoop讲述挺好的文章,在此记录一下深入理解RunLoop

  • NSRunLoop

    深入理解RunLoop RunLoop深度探究(一) RunLoop深度探究(二) RunLoop深度探究(三) ...

网友评论

      本文标题:谈一谈对RunLoop的理解

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