Implemente el protocolo a través de la extensión [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Swift: el uso de la extensión de protocolo da como resultado un "selector no reconocido enviado a la instancia" 2 respuestas

Estoy tratando de crear un protocolo que envuelva el proceso de usar el UIImagePickerController para hacerlo más ágil en mis aplicaciones. Básicamente tengo algo como esto:

public protocol MediaAccessor : UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    func mediaCaptured(title: String, fileData: NSData, fileType: String)
}

y una extensión que hace todo el trabajo pesado de solicitar el permiso y manejar los métodos delegados:

public extension MediaAccessor where Self : UIViewController {
    public func captureMedia() {
        //All sorts of checks for picker authorization
        let picker = UIImagePickerController()
        picker.delegate = self
        self.presentViewController(picker, animated: true, completion: nil)
    }

    func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
        //implementation of the delegate in extension
        //even though everything compiles, this method is not called on picker completion
    }
}

Entonces todo se compila, pero la implementación de UIImagePickerControllerDelegate a través de la extensión no parece registrarse. Cuando muestro el selector, me permite tomar una foto, pero la llamada didFinishPickingImage nunca ocurre. Si muevo esa llamada directamente al controlador, todo funciona bien, pero la idea de esto era ocultar estas cosas del controlador de vista para una interfaz muy limpia que permita que un controlador acceda a los medios desde el dispositivo. ¿Implementar métodos de protocolo a través de una extensión como esta es algo que no puede funcionar? ¿Hay algo que pueda cambiar para permitir que esto funcione, sin tener que implementar el protocolo directamente en mi controlador de vista?

Respuestas a la pregunta(1)

Su respuesta a la pregunta