Junior — Middle
¿Es posible llamar al método super en el constructor convenience initializer en Swift?
sobes.tech AI
Respuesta de la IA
En Swift, la llamada a super.init en el constructor convenience initializer no es posible directamente. Según las reglas de inicialización en Swift, los inicializadores convenience deben llamar a otro inicializador de la misma clase, no al inicializador de la superclase.
Solo el inicializador designado (el inicializador principal) puede llamar a super.init. Por lo tanto, el inicializador convenience debe primero llamar al inicializador designado de su propia clase, y este a su vez llamará a super.init.
Ejemplo:
class Parent {
init() {
print("Parent init")
}
}
class Child: Parent {
override init() {
super.init() // llamada a la superclase en el inicializador designado
print("Child designated init")
}
convenience init(param: Int) {
self.init() // llamada al inicializador designado de su propia clase
print("Child convenience init con parámetro \(param)")
}
}
let c = Child(param: 5)
Aquí, el convenience init llama a self.init(), y self.init() llama a super.init().