您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页RunLoop笔记

RunLoop笔记

来源:二三娱乐

学习sunny视频笔记

Why Run Loops?

  • 使程序一直运行并接受用户输入
  • 决定程序在何时应该处理哪些事件(Event)
  • 调用解耦(Message Queue)
  • 节省CPU时间

RunLoop in Cocoa

RunLoop in Cocoa-1.png RunLoop in Cocoa-2.png RunLoop in Cocoa-3.png Callouts.png RunLoop机制.png

CFRunLoopSource

  • Source是RunLoop的数据源抽象类(protocol)
  • RunLoop定义了2个版本的Source:
    • Source0:处理app内部事件,app自己负责管理(触发),如UIEvent,CFSocket。
    • Source1:由RunLoop和内核管理,Mach port驱动,CFMachPort,CFMessagePort。
  • 如有需要,可从中选择一种实现自己的Source。
  • 上一条基本不会发生。

CFRunLoopObserver

CFRunLoopObserver-1.png CFRunLoopObserver-2.png

CFRunLoopMode

  • Runloop在同一段时间只能且必须在一种Mode下run
  • 更换Mode时,需要停止当前的Loop,开启新Loop
  • Mode是app滑动顺畅的关键
  • 可以定制自己的Mode

几种模式:

  • NSDefaultRunLoopMode: 默认状态,空闲状态
  • UITrackingRunLoopMode: 滚动scrollview状态
  • UIInitializationRunLoopMode: 私有,app启动时
  • NSRunLoopCommonModes: mode集合
CFRunLoopMode-1.png CFRunLoopMode-2.png CFRunLoopMode-3.png CFRunLoopMode-4.png CFRunLoopMode-5.png CFRunLoopMode-6.png

实践

1.png 2.png 3.png 4.png 5.png 6.png

最后是翻看CFRunLoop的源码就不上图了,有兴趣的话可以去翻看源码。

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务