IHIDManagerScheduleWithRunLoop을 사용하여 주 스레드 (runLoop)에서 HIDManager를 예약했습니다. 그래서, 메인 스레드에서 & 제거 콜백과 일치하는 장치를 얻습니다.HID 다른 runLoop에서 콜백보고
그러나 다른 스레드에 IOHIDDeviceScheduleWithRunLoop 장치를 예약했습니다. 스레드 1로 말하십시오. 문서에 따르면, 보고서를 설정할 때 Thread-1 RunLoop에서 콜백을 수신해야합니다.
IOHIDDeviceScheduleWithRunLoop (inIOHIDDeviceRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
그러나 주 스레드에서 HIDReport 콜백을 수신합니다. 도움이 되었습니까?
UPDATE :
내가 보고서 콜백이 나는 IOHIDDeviceScheduleWithRunLoop을 제거하더라도라고 점점 참조하십시오. 장치 RunLoop에서 호출되는 보고서 콜백입니다.
IOHIDManagerScheduleWithRunLoop의 문서에 따르면 "이것은 HID 관리자를 클라이언트의 실행 루프와 공식적으로 연결합니다.이 일정은 현재 열거 된 모든 HID 장치와 HID 관리자와 일치하는 새 HID 장치로 전파됩니다"
이 내용은 일치 및 제거에만 사용해야하며, 입력 보고서에도 적용됩니다.
예, 새 스레드를 시작하고 CFRunLoopRun으로 호출합니다. 그러나 그 전에 CFGetCurrentRunLoop을 사용하여 IOHIDDeviceScheduleWithRunLoop에 연결했습니다. – coder000001