我已经使用 IOHIDManagerScheduleWithRunLoop 在主线程 (runLoop) 上安排了 HIDManager。所以,我在主线程上得到了设备匹配和删除回调。
但是,我已经在另一个线程上安排了一个设备IOHIDDeviceScheduleWithRunLoop,比如说 Thread-1。根据它的文档,当我设置报告时,我应该在 Thread-1 RunLoop 上收到回调。
IOHIDDeviceScheduleWithRunLoop(inIOHIDDeviceRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
但是,我在主线程上收到 HIDReport 回调。有什么帮助吗?
更新:
即使我删除了 IOHIDDeviceScheduleWithRunLoop,我也看到报告回调被调用。报告回调应该在设备 RunLoop 上调用。
根据 IOHIDManagerScheduleWithRunLoop 的文档,“这正式将 HID 管理器与客户端的运行循环相关联。此计划将传播到当前枚举的所有 HID 设备以及与 HID 管理器匹配的新 HID 设备”
这应该只用于匹配和删除,但我也得到了输入报告。