Sobes.tech
Junior — Middle

¿Puede explicar qué son los tipos de datos que representan referencias a objetos en la memoria?

sobes.tech AI

Respuesta de la IA

En iOS, las referencias a objetos en memoria se representan mediante punteros, pero con características que dependen del tipo de datos y la gestión de memoria.

Tipos principales de referencias:

  • Referencia fuerte (strong reference) — referencia estándar que mantiene el objeto en memoria. Mientras exista al menos una referencia fuerte, el objeto no será eliminado.

  • Referencia débil (weak reference) — no mantiene el objeto en memoria. Si el objeto se elimina, la referencia débil automáticamente se vuelve nil, evitando punteros colgantes.

  • Referencia no poseída (unowned reference) — similar a la débil, pero asume que el objeto existe durante toda la vida de la referencia. Si el objeto se elimina, acceder a la referencia no poseída provocará un fallo.

Ejemplo en Swift:

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

var strongRef: Person? = Person(name: "Alice") // referencia fuerte
weak var weakRef = strongRef                 // referencia débil
unowned var unownedRef = strongRef!          // referencia no poseída

strongRef = nil // el objeto será eliminado, weakRef se volverá nil, unownedRef será inválido

De esta forma, los tipos de referencias ayudan a gestionar el ciclo de vida de los objetos y prevenir fugas de memoria y ciclos de retención.