Runloop

1.解释

运行循环是与线程关联的基础结构的一部分。运行循环是一个事件处理循环,用于调度工作并协调接收传入事件。

2.目的

在有工作要做的时候让线程保持忙碌,在没有工作的时候让线程休眠。

3.管理

运行循环管理不是完全自动的。您仍然必须设计线程的代码,以便在适当的时间启动运行循环并响应传入的事件。Cocoa和Core Foundation都提供运行循环对象来帮助您配置和管理线程的运行循环。应用程序不需要显式地创建这些对象;每个线程(包括应用程序的主线程)都有一个关联的运行循环对象。但是,只有辅助线程需要显式地运行它们的运行循环。作为应用程序启动过程的一部分,应用程序框架自动设置并运行主线程上的运行循环。

4.作用

  • (1)保持程序的持续运行(如:程序一启动就会开启一个主线程(中的 runloop 是自动创建并运行),runloop 保证主线程不会被销毁,也就保证了程序的持续运行)。
  • (2)处理App中的各种事件(如:touches 触摸事件、NSTimer 定时器事件、Selector事件(选择器 performSelector))。
  • (3)节省CPU资源,提高程序性能(有事情就做事情,没事情就休息 (其资源释放))。
  • (4)负责渲染屏幕上的所有UI。

5.接收事件

运行循环从两种不同类型的源接收事件。

  • (1)输入源提供异步事件,通常来自另一个线程或不同应用程序的消息。
  • (2)计时器源交付同步事件,发生在预定的时间或重复的间隔。
    这两种源代码都使用特定于应用程序的处理程序例程来处理事件。

6.Run Loop Modes

Run loop modes 是要监视的输入源和计时器的集合,以及要通知的运行循环观察器的集合。每次运行运行循环时,都指定(显式或隐式)运行的特定“模式”。在运行循环的传递过程中,仅监视与该模式关联的源并允许其传递其事件。(类似地,只有与该模式相关联的观察者被通知运行循环的进度。)与其他模式相关联的源保持任何新事件,直到后续以适当模式通过循环。
公开的mode有两个,分别是NSDefaultRunLoopMode和NSRunLoopCommonModes。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,281评论 19 139
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,793评论 8 265
  • 这是一篇对Run Loop开发文档《Threading Program Guide:Run Loops》的翻译,来...
    鸿雁长飞光不度阅读 3,729评论 3 29
  • 房子比爱情更重要吗? 听说又有一对情侣,因为男方没有能力买到市中心的房子而被女方父母拆散了,听说后第一反应唏嘘不已...
    刷你卡了嘛阅读 272评论 0 1
  • 最后一天,这一年就结束,在飞往山东的飞机上,最晚决定回家陪父亲过元旦;这个年龄很容易被感动,昨天电话那头老爸...
    chaislife阅读 250评论 0 1