正确的方法断开AudioKit中的节点

时间:2018-02-18 01:09:43

标签: audiokit

我开发的应用程序需要动态添加/删除/重新排列声音链中的组件。

到目前为止,我主要在大多数组件上使用.disconnectOutput()方法,然后重新连接所有内容。这在大多数情况下都有效,但偶尔似乎节点连接在声链的多个点上,如果节点连接到AudioKit.output,我也会崩溃。

AudioKit提供了许多公共方法,例如.detach().disconnectInput().disconnect(),而且我不清楚什么是最干净或最安全的修改声音链的方法。这样做的最佳方式是什么?

另外,有没有办法跟踪哪些节点连接到哪个节点?

1 个答案:

答案 0 :(得分:2)

使用AKNode上的detach()方法将其从链中删除。

不推荐使用AKNode的disconnect()disconnect(nodes: )方法。请改用AKNode.detach()AudioKit.detach(nodes: )

我同意这个术语非常不清楚,现有文档中没有解释。在学习API时,我仍然在努力处理生命周期和运行时链动态,因此我无法传达最佳实践。一般来说,您不想破坏对象图。我使用AKMixer对象,然后使用.connect(input:bus:).disconnectInput(bus:)方法以及相关总线的内部跟踪动态附加子节点,但我仍然遇到崩溃这种方法:(

Apple的父AVAudioEngine文档页面为动态链接实践提供了几条经验法则:https://developer.apple.com/documentation/avfoundation/avaudioengine