completeHandler de AVAudioPlayerNode.scheduleFile () se llama demasiado pronto

Estoy tratando de usar el nuevo AVAudioEngine en iOS 8.

Parece que se llama el completeHandler de player.scheduleFile ()antes de el archivo de sonido ha terminado de reproducirse.

Estoy usando un archivo de sonido con una longitud de 5 segundos, y elprintln()-Mensaje aparece alrededor de 1 segundo antes del final del sonido.

¿Estoy haciendo algo mal o no entiendo la idea de un Handler completo?

¡Gracias!

Aquí hay un código:

class SoundHandler {
    let engine:AVAudioEngine
    let player:AVAudioPlayerNode
    let mainMixer:AVAudioMixerNode

    init() {
        engine = AVAudioEngine()
        player = AVAudioPlayerNode()
        engine.attachNode(player)
        mainMixer = engine.mainMixerNode

        var error:NSError?
        if !engine.startAndReturnError(&error) {
            if let e = error {
                println("error \(e.localizedDescription)")
            }
        }

        engine.connect(player, to: mainMixer, format: mainMixer.outputFormatForBus(0))
    }

    func playSound() {
        var soundUrl = NSBundle.mainBundle().URLForResource("Test", withExtension: "m4a")
        var soundFile = AVAudioFile(forReading: soundUrl, error: nil)

        player.scheduleFile(soundFile, atTime: nil, completionHandler: { println("Finished!") })

        player.play()
    }
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta