Junior — Middle
¿Cómo se puede crear una estructura de datos que conserve referencias débiles a objetos?
sobes.tech AI
Respuesta de la IA
Para crear una estructura de datos que almacene referencias débiles a objetos en iOS (Swift/Objective-C), se utiliza la clase NSMapTable o NSHashTable con la opción de referencias débiles.
Las referencias débiles permiten que los objetos se liberen de la memoria si no hay referencias fuertes a ellos, evitando fugas de memoria.
Ejemplo en Swift con NSMapTable:
let mapTable = NSMapTable<NSString, AnyObject>.weakToWeakObjects()
let key = "key" as NSString
var object: NSObject? = NSObject()
mapTable.setObject(object, forKey: key)
object = nil // ahora el objeto puede ser eliminado de la memoria
if let value = mapTable.object(forKey: key) {
print("El objeto existe")
} else {
print("El objeto fue eliminado")
}
También se puede usar Weak wrapper — un envoltorio con una referencia débil interna, si se necesita una estructura de datos personalizada.
De esta forma, para almacenar referencias débiles se usa NSMapTable con configuración weak-to-weak o weak-to-strong, dependiendo de la tarea.