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.