Ios MIDI消息正在成倍增加

Ios MIDI消息正在成倍增加,ios,midi,audiokit,Ios,Midi,Audiokit,在IOS上运行AKMIDI时,我一直遇到一个奇怪的问题。我还认为这可能是一个IOS问题,不一定来自Audiokit。我可以将MIDI控制器连接到IPad,并在打开输入后使用MIDI侦听器协议按预期接收消息。如果我通过循环电源或从IPad上拔下MIDI控制器的插头来断开MIDI控制器,然后重新连接,那么每次事件中我都会收到两条相同的消息。如果我再次循环电源,我会收到三条信息,等等。我还应该提到,当我检测到设备被移除时,我会关闭输入并清除侦听器。当我检测到新连接时,我打开输入并重新开始。有人知道是什

在IOS上运行AKMIDI时,我一直遇到一个奇怪的问题。我还认为这可能是一个IOS问题,不一定来自Audiokit。我可以将MIDI控制器连接到IPad,并在打开输入后使用MIDI侦听器协议按预期接收消息。如果我通过循环电源或从IPad上拔下MIDI控制器的插头来断开MIDI控制器,然后重新连接,那么每次事件中我都会收到两条相同的消息。如果我再次循环电源,我会收到三条信息,等等。我还应该提到,当我检测到设备被移除时,我会关闭输入并清除侦听器。当我检测到新连接时,我打开输入并重新开始。有人知道是什么原因导致这种情况发生吗?

我想我已经找到了解决办法:
如果我只打开midi in和midi out一次,当第一次检测到我的设备时,它似乎工作正常。我现在只在应用程序终止时关闭输入和输出。您可以循环打开midi控制器的电源,当它重新连接时,它仍将与应用程序通信。我现在也在使用更通用的调用openInput()、addListener(self)、openOutput()。

您能发布一个示例项目吗?该项目太大,无法发布。也许这会有帮助。当我检测到我的特定控制器已通过USB连接时,我会执行以下操作:midi.openInput(uid:inID!)midi.addListener(self)midi.openOutput(),如果我检测到它已断开连接,我会执行以下操作:midi.clearListeners()midi.closeOutput()midi.closeInput(uid:inID!),这听起来就足够了。此外,当您有一个端口要在运行期间保持不变时,您可以保留该端口的唯一id,并在下次应用程序启动时将其打开。