IOHIDDeviceSetReport方法不接受UnsafeRawPointer类型 方法签名是:
IOHIDDeviceSetReport(<#T##device: IOHIDDevice##IOHIDDevice#>, <#T##reportType: IOHIDReportType##IOHIDReportType#>, <#T##reportID: CFIndex##CFIndex#>, <#T##report: UnsafePointer<UInt8>##UnsafePointer<UInt8>#>, <#T##reportLength: CFIndex##CFIndex#>)
允许仅作为输入提供UnsafePointer类型,但在swift 3中我可以使用UnsafeRawPointer类型。 有没有人知道如何从UnsafeRawPointer获取UnsafeRawPointer?
答案 0 :(得分:1)
有几种方法可以将UnsafeRawPointer迁移到UnsafePointer。我最常用的一个是:
UnsafePointer.withMemoryRebound(to:capacity:_)
您应该能够使用上面提到的或上一页提到的其他方法来完成您的需要:
答案 1 :(得分:0)
如果报告以Data
值给出,那么您可以使用。{
withUnsafeBytes()
方法来访问字节。
使用UnsafePointer<T>
参数指向调用闭包
到字节。在这里,编译器可以自动将T
推断为UInt8
来自report
参数的类型:
let result = data.withUnsafeBytes {
IOHIDDeviceSetReport(device, type, reportID, $0, data.count)
}