我在swift中編寫了一個小實用程序,它使用IOHIDManagerRegisterInputValueCallback
註冊了一個回調函數。我想成爲一個好公民,並在自己之後進行清理。如何在swift中將nil轉換爲IOKit.IOHIDValueCallback
[文檔](https://developer.apple.com/library/content/documentation/DeviceDrivers/Conceptual/HID/new_api_10_5/tn2187.html#//apple_ref/doc/uid/TP40000970-CH214-SW61)說來註銷一個應該調用登記功能與Null
注意:要註銷通NULL回調。
不幸
IOHIDManagerRegisterInputValueCallback(hidManager, nil , nil);
不會編譯說:
無不是與預期的參數類型 'IOHIDValueCallback'(又名「@convention(C)(可選,兼容的Int32,可選,IOHIDValue) - >()')
如何將nil轉換爲正確的類型?
這裏是一個示例代碼應編譯:
import Foundation
import Carbon
import IOKit
import IOKit.usb
import IOKit.hid
class IOEventManager{
func start()->Void{
let hidManager = IOHIDManagerCreate(kCFAllocatorDefault, IOOptionBits(kIOHIDOptionsTypeNone));
let context = UnsafeMutableRawPointer(Unmanaged.passUnretained(self).toOpaque());
IOHIDManagerRegisterInputValueCallback(hidManager, nil, context);
}
}
如果你想有一個完整的項目,結賬https://github.com/jeantil/autokbisw看看IOKeyEventMonitor#deinit