我使用IOHIDManagerScheduleWithRunLoop在主线程(runLoop)上安排了HIDManager。 所以,我得到了设备匹配&删除主线程上的回调。
但是,我已经在不同的线程上安排了设备IOHIDDeviceScheduleWithRunLoop,Say Thread-1。根据它的文档,当我设置报告时,我应该在Thread-1 RunLoop上收到回调。
IOHIDDeviceScheduleWithRunLoop(inIOHIDDeviceRef,CFRunLoopGetCurrent(),kCFRunLoopDefaultMode);
但是,我正在接收主线程上的HIDReport回调。 有什么帮助吗?
更新
我看到即使我删除了IOHIDDeviceScheduleWithRunLoop,也会调用报告回调。应该在设备RunLoop上调用报告回调。
根据IOHIDManagerScheduleWithRunLoop的文档,“这正式将HID管理器与客户端的运行循环相关联。此计划将传播到当前枚举的所有HID设备以及HID管理器匹配的新HID设备”< / p>
这应仅用于匹配和删除,但我也要获取输入报告。
答案 0 :(得分:0)
你在线程1上有一个runloop吗?如果它是命令行应用程序,则必须显式启动运行循环(通过调用实例CFRunLoopRun())