es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Problema del compilador en convenience init de Xcode 13.

Antes de actualizar a Xcode 13, el código debajo funcionaba bien en otra UIView personalizada creada en Xcode 12.
Creé esta nueva vista personalizada y el compilador da los siguientes errores contradictorios con referencia al convenience init
1. La declaración de anulación requiere una palabra clave ‘override’
2. ‘init(frame:)’ ya ha sido anulado

¿Por qué Xcode 13 informa este error en la nueva clase personalizada pero no en la idéntica creada en Xcode 12?

class OptionsPanel: UIView {

    override init(frame : CGRect) {
        super.init(frame : frame)
    }

    convenience init(frame: CGRect) {
        self.init(frame: frame)
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error está ocurriendo en Xcode 13 porque el método convenience init anula el iniciador designado (init(frame:)) sin usar la palabra clave override. Este error no ocurrió en Xcode 12 porque el compilador era menos estricto acerca de esta regla en versiones anteriores. Para resolver este error en Xcode 13, simplemente agregue la palabra clave override antes del método convenience init:

    override convenience init(frame: CGRect) {
      self.init(frame: frame)
    }
    

Comments are closed.