UIApplication如何从事件队列的顶部获取事件

时间:2015-11-09 19:50:36

标签: ios objective-c iphone xcode

我在官方文档中读到了这个:

首先,单例UIApplication对象从队列顶部获取一个事件并调度它以进行处理。

这是怎么发生的? 同样在文档中有这一部分:

应用程序接触触摸处理方法:

在多点触控序列中,当给定触摸阶段有新的或改变的触摸时,应用程序会发送这些消息;它叫

touchesBegan:withEvent:当一个或多个手指在屏幕上触摸时的方法.....

有人可以解释这一行" ..应用程序发送这些消息......"。关于哪些"消息"是非常暧昧的。正在谈论文件!!!!

文档链接:https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/GestureRecognizer_basics/GestureRecognizer_basics.html#//apple_ref/doc/uid/TP40009541-CH2-SW2

此外,UIApplication内部如何将事件发送到keyWindow? 它是使用sendEvent还是具有类似

的代码

[[self keyWindow] touchesBegan:touches withEvent:event];

1 个答案:

答案 0 :(得分:0)

  

这是怎么发生的?

队列是先进先出的数据结构。你把东西放在一边,然后把它们拿出来放在另一端。确切地说调用什么方法来执行此操作取决于操作系统如何实现事件队列,但最终它根本不重要,实际上它可能在操作系统的不同版本中以不同方式完成。 事件队列是一个实现细节,因此您不应对其工作方式做任何假设。

  

有人可以解释这句话“......应用程序发送这些消息......”。

这只是意味着应用程序在某些对象上调用某些方法。在Objective-C中,“发送消息”是另一种说“调用特定对象的实例方法”的方式。如果你有:

[foo bar];

您正在向bar发送消息foo