2017-01-11 10 views
0

私はHIDに関するプログラムを持っています。しかし、Objective-Cで書かれています。それはプロジェクトであり、私の友人は迅速にしか知りません。だから私はそれを迅速に変換することを考え、その関数を書く方法を理解することはできません。HID関数Handle_DeviceMatchingCallbackを迅速に書く方法は?

のObj-Cコード:

/* 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); 

、コールバック関数は次のとおりです。迅速で


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"); 
} 

は私が

func Handle_DeviceMatchingCallback(inContext: UnsafeMutableRawPointer!, inResult: IOReturn, inSender: UnsafeMutableRawPointer!, inIOHIDDeviceRef: IOHIDDevice) 
{ 
    print("Connected") 
} 
として Handle_DeviceMatchingCallback()を書きました

しかし、私はIOHIDManagerRegisterDeviceMatchingCallback()に関数を渡すことはできません。

どうすればよいですか?あなたのケースを処理するための

答えて

2

一つの方法は、クロージャとしてコールバックを作っている:

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

さもないと、あなたはIOHIDDeviceCallbackで定義されているとまったく同じシグネチャを持つコールバック関数を宣言する必要があります。

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

(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") 
} 
関連する問題