0Pricing
Swift Academy · Lección

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 here

Designado 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

  1. Structs frente a Classes, propiedades e inicializadores
  2. Propiedades almacenadas y calculadas, observers
  3. Inicializadores y deinit (clases)
← Volver a Swift Academy