返回

以出乎意料的方式了解运行循环

IOS


当谈到 iOS 的并发性时,Run Loop 是一个经常被提到的概念,但对于它如何工作以及如何利用它,却常常让人摸不着头脑。本文将带您踏上一段有趣的旅程,深入探索 Run Loop 的奥秘,并通过官方文档的翻译来帮助您更好地理解它。



Run Loop 是一个事件处理循环,它与线程关联,用于计划工作并协调接收到的事件。它的目的是让线程在有工作要做时保持忙碌,而在没有工作时进入休眠状态,从而节省能源。

在 iOS 中,Run Loop 主要用于处理用户界面事件,例如点击、滑动、键盘输入等。它还用于处理来自其他线程或进程的消息,例如网络请求的结果、数据库更新的通知等。

Run Loop 可以有多个模式,每个模式都有自己的事件处理规则和优先级。例如,默认模式用于处理用户界面事件,而后台模式用于处理不需要用户交互的任务,例如后台下载。

Run Loop 还支持事件源和事件观察者。事件源是指可以产生事件的对象,例如计时器、输入设备等。事件观察者是指对特定事件感兴趣的对象,例如用户界面控件、网络请求委托等。

当事件源产生事件时,它会将其发送给 Run Loop。Run Loop 会根据事件的优先级和当前模式的规则来决定如何处理该事件。如果事件被处理,则事件观察者将收到通知并执行相应的操作。


为了更好地理解 Run Loop 的工作原理,我们不妨来翻译一下苹果官方文档中对 Run Loop 的。


“Run loop 是一个事件处理循环,它可以用于计划工作并协调接收到的事件的接收。Run loop 的目的是让 thread 在有工作要做时保持忙碌,而在没有工作时进入休眠状态,从而节省能源。”


“Run loop 由以下几个部分组成:

  • 事件源(Event sources) :事件源是指可以产生事件的对象,例如计时器、输入设备等。

  • 事件观察者(Event observers) :事件观察者是指对特定事件感兴趣的对象,例如用户界面控件、网络请求委托等。

  • 运行模式(Run loop modes) :运行模式是指 Run loop 可以处于的不同状态,每个模式都有自己的事件处理规则和优先级。例如,默认模式用于处理用户界面事件,而后台模式用于处理不需要用户交互的任务,例如后台下载。”


“当事件源产生事件时,它会将其发送给 Run loop。Run loop 会根据事件的优先级和当前模式的规则来决定如何处理该事件。如果事件被处理,则事件观察者将收到通知并执行相应的操作。”

通过对官方文档的翻译,我们对 Run Loop 有了更深入的了解。希望这些信息能对您有所帮助。