我如何在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