Implementar protocolo através da extensão [duplicado]

Esta pergunta já tem uma resposta aqui:

Swift: o uso da extensão de protocolo resulta em "seletor não reconhecido enviado à instância" 2 respostas

Estou tentando criar um protocolo que encerre o processo de usar o UIImagePickerController para torná-lo mais alinhado aos meus aplicativos. Eu basicamente tenho algo parecido com isto:

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

e uma extensão que faz todo o trabalho pesado de solicitar a permissão e manipular os 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
    }
}

Portanto, tudo é compilado, mas a implementação do UIImagePickerControllerDelegate por meio da extensão não parece ser registrada. Quando mostro o seletor, ele permite tirar uma foto, mas a chamada didFinishPickingImage nunca acontece. Se eu mover essa chamada diretamente para o controlador, tudo funcionará bem, mas a idéia era ocultar essas coisas do controlador de exibição para uma interface muito limpa, permitindo que um controlador acesse a mídia do dispositivo. A implementação de métodos de protocolo por meio de uma extensão como essa é algo que não pode funcionar? Existe algo que eu possa mudar para permitir que isso funcione, sem ter que implementar o protocolo diretamente no meu controlador de exibição?

questionAnswers(1)

yourAnswerToTheQuestion