【问题标题】:get value of property returned by MIDIObjectPropertyChangeNotification获取 MIDIObjectPropertyChangeNotification 返回的属性值
【发布时间】:2021-10-16 02:47:39
【问题描述】:

我正在将 AudioKit 的 MIDI 库与应用程序一起使用。虽然该框架是专有的,但有问题的代码返回的是本机结构,即 MIDIObjectPropertyChangeNotification。

这是代码,其中 MIDIListener 是由 AudioKit 定义的协议,而 MIDIConnectionManager 是我用于管理 MIDI 的类。在这个回调中,我正在通过 RTP-MIDI 监听连接和断开连接

extension MIDIConnectionManager: MIDIListener {
func receivedMIDIPropertyChange(propertyChangeInfo: MIDIObjectPropertyChangeNotification) {
let propertyName = Unmanaged.fromOpaque(propertyChangeInfo.propertyName.toOpaque()).takeUnretainedValue() as CFString
        if propertyChangeInfo.objectType == .entity && propertyName as String == "apple.midirtp.session" {
// do something in response
}
}

当我连接和断开我的应用程序时,回调会触发。但它似乎只知道被改变的属性,而不是它的价值。我假设这也将在 MIDIObjectPropertyChangeNotification 结构中。但它不是 (https://developer.apple.com/documentation/coremidi/midiobjectpropertychangenotification)。

我看到它确实公开了 MIDIObjectRef(“属性已更改的对象。”,https://developer.apple.com/documentation/coremidi/midiobjectpropertychangenotification/1495180-object),但它仅指“var propertyName: Unmanaged 已修改属性的名称。”

所以我认为必须有一种方法可以获取该对象的所有属性,并且确实足够 func MIDIObjectGetProperties (https://developer.apple.com/documentation/coremidi/1495206-midiobjectgetproperties)

但我对 Swift 还很陌生,我的技能在这里停滞不前!下一步去哪儿?我不明白如何使用该函数,我对 UnsafeMutablePointer 有点害怕!

【问题讨论】:

    标签: swift midi audiokit coremidi


    【解决方案1】:

    好的部分答案在这里 Need help converting (CFPropertyListRef *)nsdictionary to swift

    我从中得到

    var unmanagedProperties: Unmanaged<CFPropertyList>?
                MIDIObjectGetProperties(propertyChangeInfo.object, &unmanagedProperties, false)
                if let midiProperties: CFPropertyList = unmanagedProperties?.takeUnretainedValue() {
                    let midiDictionary = midiProperties as! NSDictionary
                    print("Midi properties: \n \(midiDictionary)");
                }
    

    嗯。所有那些时髦的接近金属的指针爵士乐让我紧张:-|

    但是该对象有一个属性“peers”,它看起来像是检测连接或其他方式的钩子。

    【讨论】:

      猜你喜欢
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 1970-01-01
      • 2020-11-19
      • 2011-08-02
      相关资源
      最近更新 更多