MIDIClientCreate不适用于Swift中的32位处理器

时间:2014-12-30 16:24:14

标签: swift coremidi

当方案是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)

0 个答案:

没有答案