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.