Sobes.tech
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.