我如何在Swift中定义一个MIDINotifyProc?

我试图让MIDI会话使用swift代码,并且遇到了一些代表的问题。

这是Objective-C中的一个工作示例。

OSStatus status = MIDIClientCreate(CFSTR("MIDI Client"), MIDIStateChangedHandler, nil, &client); void MIDIStateChangedHandler(const MIDINotification *message, void *refCon) { NSLog(@"MIDIStateChanged!"); } 

这就是我用Swift尝试的:

 var status = MIDIClientCreate("the client", notifyProc: MIDIStateChangedHandler, notifyRefCon: nil, outClient: client) func MIDIStateChangedHandler(message: MIDINotification, refCon: UnsafeMutablePointer<Void>) { println("MIDIStateChanged!"); } 

这是我无法弄清楚的错误(我是iOS新手,拥有多年的C#经验):

(StringLiteralConvertible,notifyProc:(MIDINotification,refCon:UnsafeMutablePointer) – >(),notifyRefCon:NilLiteralConvertible,outClient:@lvalue MIDIClientRef!)'来input'StringLiteralConvertible'

 var status = MIDIClientCreate("the client", notifyProc: MIDIStateChangedHandler, notifyRefCon: nil, outClient: client) 

苹果公司没有一个斯威夫特例子MIDINotifyProc或其他我想使用的MIDIfunction,我无法弄清楚正确的方法参数types。

目前没有办法将Swift函数转换为C函数,所以只能用Swift来完成。 这里有一个关于如何尽可能less的使用Objective-C的例子: Objective-C的CFunctionPointer封装到Swift Closure