Junior — Middle
¿Cómo se libera la memoria ocupada por un objeto en un programa?
sobes.tech AI
Respuesta de la IA
En iOS, la liberación de memoria ocurre principalmente automáticamente gracias al sistema ARC (Contador de Referencias Automático). Cada objeto tiene un contador de referencias, que aumenta al crear una nueva referencia fuerte y disminuye al eliminarla. Cuando el contador llega a cero, el objeto se destruye automáticamente y se libera la memoria.
Si en el código aparecen referencias cíclicas (por ejemplo, dos objetos con referencias fuertes entre sí), la memoria no se libera. Para solucionar este problema, se utilizan referencias débiles (weak) o sin dueño (unowned).
Ejemplo:
class Person {
var name: String
weak var apartment: Apartment? // referencia débil para evitar ciclo
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
unowned let tenant: Person // referencia sin dueño
init(unit: String, tenant: Person) {
self.unit = unit
self.tenant = tenant
}
}
De esta manera, la liberación de memoria ocurre automáticamente si se gestionan correctamente las referencias.