Inicializadores y deinit (clases)
Cree inicializadores designados y de conveniencia, proporcione valores predeterminados, use failable init cuando sea necesario y comprenda los deinitializers de las clases.
Inicializadores y deinit (clases) es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 3 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 3 lecciones en total.
Descripción general
Esta lección aborda los inicializadores designados y de conveniencia, los valores predeterminados, init que puede fallar y deinit en las clases.
Conceptos básicos de init en estructuras
Las estructuras reciben un inicializador miembro a miembro. Proporcione valores predeterminados para simplificar las llamadas.
struct User {
var name: String = "Guest" // default value
var age: Int
// memberwise init is synthesized: User(name:age:)
}
let u1 = User(name: "Ada", age: 20)
let u2 = User(age: 0) // uses default name
print(u1.name, u2.name)Inicializador designado
Un inicializador designado garantiza que todas las propiedades almacenadas estén establecidas antes de usarlas.
class Person {
let name: String
let id: Int
// Designated initializer: fully initializes stored properties
init(name: String, id: Int) {
self.name = name
self.id = id
}
}
let p = Person(name: "Bob", id: 1)
print(p.name, p.id)Inicializador de conveniencia
Los inicializadores convenience deben delegar en un inicializador designado de la misma clase.
class Rectangle {
var width: Double
var height: Double
// Designated
init(width: Double, height: Double) {
self.width = width
self.height = height
}
// Convenience must call a designated initializer
convenience init(square side: Double) {
self.init(width: side, height: side)
}
}
print(Rectangle(square: 3).width)Inicializador que puede fallar
Use init? para entradas que puedan no superar la validación. El resultado es opcional.
struct Email {
let value: String
init?(_ raw: String) {
guard raw.contains("@") else { return nil } // fail to initialize
self.value = raw
}
}
print(Email("a@b.com")?.value ?? "invalid")
print(Email("not email")?.value ?? "invalid")Desinicializador
Solo las clases tienen deinit, que se llama cuando se desasigna la instancia (ARC).
class TempResource {
let id: Int
init(id: Int) { self.id = id }
deinit { print("Releasing resource", id) }
}
do {
let r = TempResource(id: 42)
print("Using", r.id)
} // r goes out of scope; ARC may call deinit hereDesignado frente a de conveniencia
Comprobación rápida: ¿A qué inicializador deben llamar en última instancia los inicializadores convenience?
Resumen
Resumen: Use inicializadores designados para establecer todas las propiedades; añada inicializadores convenience para ofrecer sitios de llamada más cómodos; considere init? para la validación; las clases liberan recursos en deinit.
Preguntas frecuentes
¿La lección «Inicializadores y deinit (clases)» es gratis?
Sí — el texto completo de «Inicializadores y deinit (clases)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 3 lecciones en total.
¿Qué aprenderé en «Inicializadores y deinit (clases)»?
Cree inicializadores designados y de conveniencia, proporcione valores predeterminados, use failable init cuando sea necesario y comprenda los deinitializers de las clases. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Swift Academy?
No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 3.
¿Cuánto tiempo toma la lección «Inicializadores y deinit (clases)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Swift Academy?
Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Structs frente a Classes, propiedades e inicializadores
- Propiedades almacenadas y calculadas, observers
- Inicializadores y deinit (clases)