Взгляните на Spring AOP . Вам не нужно подклассифицировать свой класс вручную, но Spring создаст их за кулисами и добавит код для перехвата.
Заменить
func captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!){
на правильный метод делегата
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {