callback を登録解除できない IOKit のバグ
IOKit で HID デバイスからデータを受け取るには IOHIDDeviceRegisterInputReportCallback()
で callback を登録する。逆に callback の登録を解除したいときは専用の関数があるわけではなく Apple の資料によると
Note: To unregister pass NULL for the callback.
登録するときと同じ関数を、(callback: NULL)
で呼べばいいらしい。
...と知ってからずっと試しているけど、どんな書き方をしても解除したはずの古い context で callback が呼ばれてしまい、アプリケーションがクラッシュ。
どうしようもないので IOKit のソースコードを読んでみることに。