不同runLoop上的HID报告回调



我已使用IOHIDManagerScheduleWithRunLoop在主线程(runLoop)上调度HIDManager。所以,我得到了设备匹配&删除主线程上的回调。

但是,我已经在另一个线程Say thread-1上调度了一个设备IOHIDDeviceScheduleWithRunLoop。根据文档,当我设置报告时,我应该会收到Thread-1 RunLoop上的回调。

IOHIDDeviceScheduleWithRunLoop(inIOHIDDeviceRef,CFRunLoopGetCurrent(),kCFRunLoop DefaultMode);

但是,我在主线程上收到HIDReport回调。有什么帮助吗?

更新:

我看到报告回调被调用,即使我删除了IOHIDDeviceScheduleWithRunLoop。报告回调应该在设备RunLoop上调用。

根据IOHIDManagerScheduleWithRunLoop的文档,"这将HID管理器与客户端的运行循环正式关联。此计划将传播到当前枚举的所有HID设备,以及HID管理程序匹配的新HID设备"

这应该只用于匹配和删除,但我也得到了输入报告。

线程-1上有runloop吗?如果是命令行应用程序,则必须显式启动运行循环(例如通过调用CFRunLoopRun())

最新更新