Middle
Qual é a diferença entre convenções e designado?
sobes.tech IA
Resposta da IA
Os inicializadores de conveniência são secundários, podem apenas chamar outros inicializadores do mesmo classe, delegando finalmente a chamada ao inicializador designado. São usados para adicionar formas convenientes de criar instâncias.
Os inicializadores designados são os principais, garantem a inicialização completa de todas as propriedades armazenadas da classe (as próprias e as da classe pai). Podem chamar inicializadores designados da classe pai. Cada classe deve ter pelo menos um inicializador designado.
class BaseClass {
var baseProperty: String
init(baseProperty: String) { // Inicializador designado
self.baseProperty = baseProperty
}
}
class DerivedClass: BaseClass {
var derivedProperty: Int
init(baseProperty: String, derivedProperty: Int) { // Inicializador designado
self.derivedProperty = derivedProperty
super.init(baseProperty: baseProperty) // Chamada ao inicializador designado do pai
}
convenience init(baseProperty: String) { // Inicializador de conveniência
self.init(baseProperty: baseProperty, derivedProperty: 0) // Delegação ao seu próprio inicializador designado
}
convenience init() { // Inicializador de conveniência
self.init(baseProperty: "Default Base", derivedProperty: -1) // Delegação ao seu próprio inicializador designado
}
}