我收到了错误。
无法转换类型'() - >的值()'输入' MIDICompletionProc' (又名' @convention(c)(UnsafeMutablePointer) - > ()')在胁迫中。
其他一切看起来都不错但是对于我的生活,我似乎无法组成CompletionProc
函数调用。
var mySysExSendRequest : MIDISysexSendRequest
let myCompProc = sysexCompletionProc (a separate static function)
mySysExSendRequest = MIDISysexSendRequest(destination: Dest,
data: dataptr,
bytesToSend: 16,
complete: complete,
reserved: res,
completionProc: sysexCompletionProc as MIDICompletionProc,
completionRefCon: nil)
MIDISendSysex(&mySysExSendRequest)
答案 0 :(得分:1)
您目前正在提供不带参数的函数,即() -> Void
。
您的完成程序必须具有此签名:
(UnsafeMutablePointer<MIDISysexSendRequest>) -> Void
另请注意,由于proc必须与@convention(c)
语义兼容,因此它不能是类方法或闭包。
可以通过在self
字段中传递指向completionRefCon
的指针,然后在回调中将其反转(使用&#34;不安全&#34;方法)来解决该限制