zoukankan      html  css  js  c++  java
  • 初探Runloop(一)

    iOS 的最大特点就是运行时. 保证运行时的就是RunLoop

    1.什么是RunLoop呢?

    从字面理解就是:运行循环

    引用下官方文档的介绍:

    A run loop is an event processing loop that you use to schedule work and coordinate the receipt of incoming events.(翻译:运行循环是一个事件处理循环,用于计划工作和协调接收传入事件。)

    2.RunLoop 的作用是什么 ?

    自我总结如下:

    (1) 保证程序一直运行

    (2)负责监听事件

    (3)负责在一次循环中渲染UI

    (4)有event就做 做完或者无事就退朝休息

    作为一名开发者,我们有想过在ViewDidLoad里写的代码怎么执行的吗?

    就比如一个简单的打印代码 NSLog(@"123456"); 系统就是把代码加到了RunLoop里来保证代码的执行.

    3.RunLoop的五种模式(4和5属于系统运行模式,开发几乎用不到

    (1) KCFRunLoopDefaultMode:默认 Mode,通常主线程在这个 Mode 下运行。
    (2) UITrackingRunLoopMode:(优先切换)UI界面有交互时触发 。 (3)kCFRunLoopCommonModes:在任意 mode 下,发生事件时,commonMode 都会被触发。 
    (4) UIInitializationRunLoopMode:刚启动 app 进入的第一个 mode,起到过渡的作用,启动完成后不再使用。
    (5)GSEventReceiveRunLoopMode: Graphic 相关事件的 mode。

    4.RunLoop 的mode 里面都有什么?

    (1)Source

    关于Source在官方文档中提到:运行循环从两种不同类型的源接收事件。

    ①输入源传递异步事件,通常是来自另一个线程或其他应用程序的消息。

    ②计时器源传递在预定时间或重复间隔发生的同步事件。

    (2)Observer

    (3)Timer

    5.什么时候用RunLoop?

    官方建议下面四种情况使用RunLoop:

    • Use ports or custom input sources to communicate with other threads.
      使用端口或自定义输入源与其他线程通信。
    • Use timers on the thread.
      在线程上使用计时器。
    • Use any of the performSelector… methods in a Cocoa application.
      在Cocoa应用程序中使用任何PerformSelector…方法。
    • Keep the thread around to perform periodic tasks.
      保持线程在周围以执行定期任务。
  • 相关阅读:
    python(day1-11)
    如何进行测试管理
    为什么你参加了那么多培训,却依然表现平平?
    数据库总结
    为何大量网站不能抓取?爬虫突破封禁的6种常见方法
    re--读书笔记【转】
    re--findall 【转】
    re--参考手册
    bs4--官文--遍历文档树
    rhel6+apache2.4+mysql5.7+php5.6部署LAMP架构
  • 原文地址:https://www.cnblogs.com/lovemargin/p/10533868.html
Copyright © 2011-2022 走看看