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")
}
}
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 claveoverride
. 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 claveoverride
antes del métodoconvenience init
: