Swift 音频套件AKWaveTable内存泄漏

Swift 音频套件AKWaveTable内存泄漏,swift,audiokit,Swift,Audiokit,我不知道是我还是我发现了AKWaveTable的问题 基本上,当我加载一个音频文件(一个短文件,大约7秒)并将其分配给AKWaveTable进行采样,然后我尝试用另一个文件替换它时,新文件被加载,但分配的内存不断增长 以下是伪代码: class Element { var player:AKWaveTable? //other stuff init(_ path:String){ let temp_file = try AKAudioFile(readFileN

我不知道是我还是我发现了AKWaveTable的问题

基本上,当我加载一个音频文件(一个短文件,大约7秒)并将其分配给AKWaveTable进行采样,然后我尝试用另一个文件替换它时,新文件被加载,但分配的内存不断增长

以下是伪代码:

class Element {
   var player:AKWaveTable?
   //other stuff

   init(_ path:String){
       let temp_file = try AKAudioFile(readFileName: path)

       self.player = AKWaveTable(audioFile: temp_file)

   }
}
在我的代码中的某个时刻:

//declare array of class Element
var sample:[Element] = []

//and put something into it's elements
sample[n] = Element("path/to/file.wav")

//do some stuff

//then replace that sample with another file
sample[n] = Element("path/to/another/file.wav")
用AKPlayer完成的这个过程也很好,但我真的需要AKWaveTable来获得更好的性能

在连续更换一些音频样本后,分配的内存会快速增长到900MB

我做错了什么? 任何帮助都将不胜感激, 谢谢大家!

该应用程序适用于MacOS

Swift 4.2

音频套件4.5.2

Xcode 10.0


MacOS High Sierra 10.13.6

还有一点需要指出,继续创建新的AKWavetables可能不是一个好主意。例如,在音频引擎运行的情况下,您无论如何都无法做到这一点

如果可以,将最大大小设置为最长样本,然后在需要时使用load(file:AKAudioFile)加载新文件

泄漏已经修复,将在下一版本AK中发布


感谢yall

您好,您可能发现了一个bug,我刚刚和AKWaveTable的主要作者谈过,我们一定会查看它,并在这里发布我们的发现,希望也能发布一个AK的固定版本。@AureliusProchazka好的,太好了!谢谢你的出色工作!您好@audiocoder,我正在处理
AKWavetables
,我也有类似的内存问题。你能再解释一下吗?更好的内存管理;我是否应该(重新)使用相同的
AKWavetables
实例,方法是加载新的wave文件,而不是断开与混合器的连接,终止(nil)并为另一个wave文件创建新实例?如果是这样,我会考虑创建一个数组来重用<代码> AKWavetables <代码>实例,谢谢您的建议。我会尽可能多地重用AKWavetable,并在构建应用程序时使用足够的内存创建尽可能多的应用程序。