Sobes.tech
Junior — Middle

¿Es posible implementar un mecanismo que rastree objetos mediante referencias débiles, sin impedir su eliminación por el recolector de basura?

sobes.tech AI

Respuesta de la IA

Sí, en iOS (y en Swift) existe un mecanismo de referencias débiles (weak references), que permite rastrear objetos sin mantenerlos en memoria y evitar su eliminación por el recolector de basura (ARC).

Una referencia débil no incrementa el contador de referencias del objeto, por lo que cuando ya no hay referencias fuertes, se libera de la memoria.

Ejemplo de uso de una referencia débil en Swift:

class Person {
    let name: String
    init(name: String) {
        self.name = name
    }
}

class Apartment {
    weak var tenant: Person?  // referencia débil
}

var person: Person? = Person(name: "Ivan")
var apartment: Apartment? = Apartment()
apartment?.tenant = person

person = nil  // el objeto Person será eliminado, ya que no hay referencias fuertes

print(apartment?.tenant)  // nil

De esta forma, las referencias débiles permiten rastrear objetos sin impedir su eliminación.