Uso de un clip de audio causando pérdida de memory

Tengo una escena del juego sprite-kit ( SKScene ) que utiliza clips de audio de vez en cuando. No quiero crear una acción nueva ( SKAction ) cada vez que necesito ejecutar un clip de audio corto ya que el sonido podría tartamudear. Así que inicializo una variable de acción con un nombre de file y me preparo para usarlo cuando sea necesario.

 class GameScene: SKScene { let audioMatchAction = SKAction.playSoundFileNamed("myAudio", waitForCompletion: false) } 

Luego, cuando necesito ejecutar este clip de audio, solo utilizo la siguiente línea de código.

 self.run(audioMatchAction) 

Teniendo en count todas las circunstancias, hay algunas indicaciones de que la memory podría estar goteando cuando el controller de vista ( UIViewController ) establece una escena. Entonces, he utilizado Asignaciones para ver qué está sucediendo. Y dice que hay dos filtraciones apuntando a la biblioteca AudioToolbox . De todos modos, he cambiado la línea anterior a la siguiente.

 let waitAction = SKAction.wait(forDuration: 1.0) self.run(audioMatchAction, withKey: "audio") self.run(waitAction, completion: { self.removeAction(forKey: "audio") }) 

Las asignaciones todavía dicen que hay dos filtraciones cuando la aplicación pasa al controller de visualización del juego. He leído algunas docenas de temas relacionados con SKAction y clips de audio. Hay algunos temas en los que sugieren que usamos SKAudioNode en lugar de SKAction.playSoundFileNamed . Lo he intentado Y las filtraciones permanecen. Incluso he usado AVAudioPlayer . Todavía tengo dos fugas. Si dejo de llamar por completo los clips de audio, las Asignaciones no informarán sobre una fuga, lo que me indica que el uso de estos clips está causando las fugas. Entonces, ¿qué puedo hacer para evitar que los clips de audio pierdan memory? Gracias.

ACTUALIZAR

Creo que ayer utilicé las siguientes líneas de código para AVAudioPlayer para ver si las filtraciones desaparecerían.

 class GameScene: SKScene { let audioURLMatch = URL(fileURLWithPath: Bundle.main.path(forResource: "myAudio", ofType: "caf")!) as NSURL var audioURLMatchPlayer = AVAudioPlayer() override func didMove(to view: SKView) { // audio // do { audioURLMatchPlayer = try AVAudioPlayer(contentsOf: audioURLMatch as URL) audioURLMatchPlayer.prepareToPlay() } catch let error { } } } 

introduzca la descripción de la imagen aquí