NSRunLoop概述

来源:互联网 发布:淘宝网内部优惠券 编辑:程序博客网 时间:2024/06/07 10:31

Runloop语义:Runloop是你的线程所进入的一个循环,并且可以根据输入事件调用事件处理程序。一个run loop从两种源接收事件。一种是输入源,其提交异步事件,通常是自其他线程或其他程序的消息。另一种是定时源,其提交同步事件,发生在规定的时间或重复的时间间隔。这两种源都使用事件处理例程来处理事件。下图显示了run loop和源之间的关系:

run loop和source个结构图

输入源(Input Source):
1.基于端口的源:可直接创建端口对象并使用NSPort的方法来添加端口到run loop。关于如何创建和设置基于端口的源,可看Configuring a Port-Based Input Source。
2.自定义输入源(Custom Input Sources):
3.Cocoa Perform Selector Source:对于基于端口源的补充,Cocoa定义了一种自定义输入源以在任意线程上执行选择器。当在另一个线程上执行选择器时,目标线程必须有激活的run loop。

定时源(Timer Source):
定时源在将来一个预设的时间提交事件到线程。

Run Loop Observers:
与源相反,观察者只在run loop执行时的几个特定位置被触发:
1. Runloop入口
2. Runloop将要处理一个定时器时
3. Runloop将要处理一个输入源时
4. Runloop将要进入睡眠状态时
5. Runloop已被唤醒,但在已处理使其唤醒的事件之前
6. Runloop终止

何时使用Run Loop:
1.通过端口或自定义输入源和其它线程通信时。
2.在线程上使用定时器时。
3.使用performSelector…方法时。
4.使用线程执行周期性的任务时。

0 0
原创粉丝点击