当方案是64位处理器(iPhone 5及更高版本)时,我可以通过MIDIClientCreate创建一个midiclient。它不适用于32位处理器,例如iPhone 4s。
#if !arch(arm64) || !arch(x86_64)
var status = OSStatus(noErr)
var s:CFString = "MyClient"
var client : Unmanaged<MIDIClient>?
status = MIDIClientCreate(s,
MIDINotifyProc( COpaquePointer( [ MyMIDINotifyProc ] ) ),
nil,
&client)
if status == OSStatus(noErr) {
if let c = client {
var val = c.takeRetainedValue()
Blammo。 takeRetainedValue上的访问异常错误。如您所见,状态正常,我正在打开可选项。
你有什么建议吗?
如果您想知道,对于64位处理器,它更简单,因为您可以初始化客户端var。查看MIDIServices.h,您将看到MIDICLient的定义因处理器而异。
var client = MIDIClientRef()
status = MIDIClientCreate(s,
MIDINotifyProc( COpaquePointer( [ MyMIDINotifyProc ] ) ),
nil,
&client)