zoukankan      html  css  js  c++  java
  • OC原理之RunLoop的运行逻辑

    RunLoop四个主要主要组成

    Source0

    触摸事件处理、performSelector:onThread:

    Source1

    基于Port的线程间通信、系统事件的捕捉

    Timers

    NSTimer、performSelector:withObject:afterDelay

    Observers

    用于监听RunLoop的状态 UI刷新(BeforeWaiting) Autorelease pool(BeforeWaiting)

    运行过程

    1.通知Observers:进入Loop

    2.通知Observers:即将处理Timers

    3.通知Observers:即将处理Sources

    4.处理Blocks

    5.处理Sources0(可能会再次处理Blocks)

    6.如果存在Source1,就跳转到第8步

    7.通知Observers:开始休眠(等待消息唤醒)

    8.通知Observers:结束休眠(被某个消息唤醒)

        处理Timer

        处理GCD Async To Main Queue

        处理Source1

    9.处理Blocks

    10.根据前面的执行结果,决定如果操作

        回到2步

        退出Loop

    11.通知Observers: 退出Loop

  • 相关阅读:
    多线程02
    多线程01
    CSS
    Mybatis CRUD中万能Map的用法及优势
    Tomcat配置
    Node.js+Vue+Webpack
    Java的几种常见排序算法
    maven插件 mybatis逆向工程
    ssm依赖
    mybatis spring整合依赖配置
  • 原文地址:https://www.cnblogs.com/muzichenyu/p/14433198.html
Copyright © 2011-2022 走看看