Inicialización II en Swift: failable init, required init e inicialización en herencia

required obliga a que todas las subclases implementen ese inicializador. Es especialmente importante cuando usas protocolos o inicialización desde NSCoder:

class Widget {
    required init(frame: CGRect) {
        // setup
    }
}

class MiWidget: Widget {
    required init(frame: CGRect) {
        super.init(frame: frame)
        // setup adicional
    }
}

Herencia de inicializadores

Una subclase hereda automáticamente los initializers del padre cuando no define ninguno propio o cuando implementa todos los designated initializers del padre. En otro caso, debe hacerlo explícitamente con override init:

class Base {
    var valor: Int
    init(valor: Int) { self.valor = valor }
    convenience init() { self.init(valor: 0) }
}

class Derivada: Base {
    var extra: String
    override init(valor: Int) {
        self.extra = "default"
        super.init(valor: valor)
    }
    // hereda convenience init() automaticamente
}

let d = Derivada()  // valor=0, extra="default"

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP