Sobes.tech
Junior — Middle

¿En qué se diferencian los tipos de referencias Strong y Weak en la gestión de memoria y el modelo de referencias?

sobes.tech AI

Respuesta de la IA

Strong-enlace es un enlace fuerte normal a un objeto, que aumenta el contador de referencias (retener cuenta) de ese objeto. Mientras exista al menos un enlace fuerte, el objeto no será eliminado de la memoria.

Weak-enlace es un enlace débil, que no aumenta el contador de referencias del objeto. Se usa para prevenir ciclos de retención (retener ciclos). Si el objeto al que apunta el enlace débil se elimina, el enlace débil se establece automáticamente en nil.

Ejemplo en Swift:

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

class Apartment {
    let unit: String
    weak var tenant: Person?  // enlace débil para evitar ciclo
    init(unit: String) { self.unit = unit }
}

let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john  // enlace débil

Aquí, el enlace débil tenant no mantiene al objeto Person, lo que permite evitar fugas de memoria.