Sobes.tech
Junior — Middle

¿Ha utilizado variables de referencia como Unowned en sus proyectos?

sobes.tech AI

Respuesta de la IA

Sí, en proyectos de iOS he utilizado variables de referencia como unowned.

unowned es un tipo de referencia débil que no incrementa el contador de referencias, pero asume que el objeto al que hace referencia siempre existirá durante el uso de esa referencia.

Esto es útil para prevenir ciclos de referencias fuertes, por ejemplo, en cierres o en referencias mutuas entre objetos, cuando un objeto garantiza que vivirá más que otro.

Ejemplo de uso de unowned en un cierre:

class Person {
    let name: String
    var apartment: Apartment?
    
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    let unit: String
    unowned let tenant: Person
    
    init(unit: String, tenant: Person) {
        self.unit = unit
        self.tenant = tenant
    }
}

let john = Person(name: "John")
let apt = Apartment(unit: "4A", tenant: john)
john.apartment = apt

Aquí, tenant se declara como unowned, ya que el apartamento no debe existir sin el inquilino, y esto previene un ciclo de referencia fuerte.