美文网首页iOS面试
iOS Runloop面试题(解释一下 `事件响应` 的过程?)

iOS Runloop面试题(解释一下 `事件响应` 的过程?)

作者: 程序员_秃头怪 | 来源:发表于2019-08-03 13:42 被阅读4次

解释一下 事件响应 的过程?

苹果注册了一个 Source1 (基于 mach port 的) 用来接收系统事件,其回调函数为 __IOHIDEventSystemClientQueueCallback()

当一个硬件事件(触摸/锁屏/摇晃等)发生后,首先由 IOKit.framework 生成一个 IOHIDEvent 事件并由 SpringBoard 接收。这个过程的详细情况可以参考这里。SpringBoard 只接收按键(锁屏/静音等),触摸,加速,接近传感器等几种 Event,随后用 mach port 转发给需要的 App 进程。随后苹果注册的那个 Source1 就会触发回调,并调用 _UIApplicationHandleEventQueue() 进行应用内部的分发。

_UIApplicationHandleEventQueue() 会把 IOHIDEvent 处理并包装成 UIEvent 进行处理或分发,其中包括识别 UIGesture/处理屏幕旋转/发送给 UIWindow 等。通常事件比如 UIButton 点击touchesBegin/Move/End/Cancel 事件都是在这个回调中完成的。

面试题持续整理更新中,需要拿到第一手大厂面试题及答案文档可以添加 iOS进阶学习交流群:551346706 !结实人脉、讨论技术你想要的这里都有!

相关文章

网友评论

    本文标题:iOS Runloop面试题(解释一下 `事件响应` 的过程?)

    本文链接:https://www.haomeiwen.com/subject/mhscdctx.html