El requisito de inicializador 'init (json :)' solo puede cumplirse con un inicializador 'requerido' en la definición de la clase no final 'UIColor'

Estoy tratando de escribir una extensión para satisfacer un protocolo en una extensión como esta:

extension UIColor: JSONRepresentable {
    convenience init?(json: Any) {
        guard let colourArray = json as? [CGFloat] else {
            print("json was not an array of CGFloats")
            return nil
        }

        self.init(red: colourArray[0],
                  green: colourArray[1],
                  blue: colourArray[2],
                  alpha: colourArray[3])
    }
}

Recibo este error:Initializer requirement 'init(json:)' can only be satisfied by a required initializer in the definition of non-final class 'UIColor'. Si agrego unrequired palabra clave, me sale este error'required' initializer must be declared directly in class 'UIColor' (not in an extension). ¿Hay alguna razón y alguna forma de evitar esto?

Editar: Para ser claros, aquí está el protocolo

protocol JSONRepresentable {
    init?(json: Any)
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta