IOS深入学习(8)之Main event loop

来源:互联网 发布:java调用lua脚本 编辑:程序博客网 时间:2024/05/29 08:52

1 前言

    主要事件循环是当应用运行起来就一直存在的队列,当有用户操作的时候就会追加进来,然后应用程序从中获得到事件,派发给对应的视图进行处理,下面我们就来详细的介绍一下它。

2 详述

    在主要时间循环中,应用程序不断路由事件到处理对象,并且处理的结果,更新他的表现和状态。事件循环是一个简单的循环:一个安排工作和整合收到的来自于各种附加在运行循环的输入源事件的处理循环。每个线程都访问运行循环。除了主线程,运行循环必须通过手动编码被配置和运行。在Cocoa应用中,主线程的运行循环--主事件循环--通过application 对象自动运行。区分主事件循环的是私有输入源通过由用户行为生成的操作系统接收到的事件--例如:单击视图或者通过键盘输入文本信息。

2.1 Application对象获得和分配事件

    当应用程序运行后,就建立了主事件循环的基础。他建立了连接通过这些潜在的代表低级用户活动交付给的系统组件。Application接受这些事件通过一个安装在主线程循环的输入源。因为应用程序独自处理每个事件,按照每个事件到达的次序被放入到了先进先出的时间队列中。

    一旦用户界面初始化在屏幕上,之后应用程序就被外部事件所驱动着。Application对象包含了事件队列的顶端对象,转换它成为event对象(在IOS中为UIEvent),然后分配它到应用中的其他的对象处理。当调用被分配的对象返回时,应用获得队列中的下一个对象然后分配他,应用会持续这么做知道应用终止。

2.2 核心对象响应事件并且绘制用户界面

    当应用运行的时候,它会设置一个可以响应绘制用户界面和处理事件的核心对象组。这些核心对象包含窗口和各种各样的视图。当应用对象从事件队列中获得一个事件,它分配这个事件到用户事件发生的窗口。窗口发送事件到最适合处理它的视图:

·对于多重触摸和鼠标事件,是触摸和鼠标点击的视图。

·对于键盘,动作和其他事件,视图是第一响应者。

    如果初始化视图没有处理事件,它能够在应用程序中通过响应链传递到其他视图。

    在处理事件的时候,视图经常初始化一系列的被应用程序的活动所改变的动作并且更新应用程序的状态和数据。当这些活动已经完成,控制返回到从事件队列中捕获到下一个事件的应用程序中。

3 结语

    以上是所有内容,希望对大家有所帮助。

原创粉丝点击