2017-01-11 3 views
0

Ich habe ein Programm auf HID. Aber es ist in Objective-C geschrieben. Es ist ein Projekt und meine Freunde wissen nur schnell. Also habe ich daran gedacht, es schnell zu machen und ich kann nicht herausfinden, wie ich diese Funktion schreiben soll.Wie schreibe ich die HID-Funktion Handle_DeviceMatchingCallback in swift?

Obj-c-Code:

/* Creating The HID Manager */ 
IOHIDManagerRef manager = IOHIDManagerCreate(kCFAllocatorDefault, kIOHIDOptionsTypeNone); 
/* Dictionary Matching - All the devices */ 
IOHIDManagerSetDeviceMatching(manager,NULL); 
/* Connected and Disconnected Call Backs */ 
IOHIDManagerRegisterDeviceMatchingCallback(manager, &Handle_DeviceMatchingCallback , NULL); 
IOHIDManagerRegisterDeviceRemovalCallback(manager, &Handle_DeviceRemovalCallback,NULL); 

Und die Rückruf-Funktionen sind:

static void Handle_DeviceMatchingCallback(void *inContext, 
              IOReturn inResult, 
              void *inSender, 
              IOHIDDeviceRef inIOHIDDeviceRef) 
{ 
    printf("Connected\n"); 



} 


static void Handle_DeviceRemovalCallback(void *inContext, 
             IOReturn inResult, 
             void *inSender, 
             IOHIDDeviceRef inIOHIDDeviceRef) 
{ 
    printf("Disconnected\n"); 
} 

In schnellen,

I Handle_DeviceMatchingCallback() als

func Handle_DeviceMatchingCallback(inContext: UnsafeMutableRawPointer!, inResult: IOReturn, inSender: UnsafeMutableRawPointer!, inIOHIDDeviceRef: IOHIDDevice) 
{ 
    print("Connected") 
} 
schrieb

Aber ich kann die Funktion nicht an IOHIDManagerRegisterDeviceMatchingCallback() übergeben.

Wie geht das?

Antwort

2

Eine Möglichkeit, Ihren Fall macht die Rückrufe als Verschlüsse zu handhaben:

let Handle_DeviceMatchingCallback: IOHIDDeviceCallback = {context, result, sender, device in 
    print("Connected") 
} 
let Handle_DeviceRemovalCallback: IOHIDDeviceCallback = {context, result, sender, device in 
    print("Disconnected") 
} 

Oder aber, müssen Sie Callback-Funktionen mit genau der gleichen Unterschrift erklären, wie in IOHIDDeviceCallback definiert.

typealias IOHIDDeviceCallback = (UnsafeMutableRawPointer?, IOReturn, 
    UnsafeMutableRawPointer?, IOHIDDevice) -> Void 

(Entnommen aus der Schnellen Hilfe von Xcode.)

func Handle_DeviceMatchingCallback(_ context: UnsafeMutableRawPointer?, _ result: IOReturn, _ sender: UnsafeMutableRawPointer?, _ device: IOHIDDevice) { 
    print("Connected") 
} 
func Handle_DeviceRemovalCallback(_ context: UnsafeMutableRawPointer?, _ result: IOReturn, _ sender: UnsafeMutableRawPointer?, _ device: IOHIDDevice) { 
    print("Disconnected") 
} 
Verwandte Themen