Sobes.tech
Junior — Middle

¿Cómo se realiza la asignación y liberación de memoria para tipos de datos referenciales?

sobes.tech AI

Respuesta de la IA

En iOS, para tipos de referencia (por ejemplo, clases), la memoria se asigna dinámicamente en el montón (heap). Cuando se crea un objeto de clase, el sistema asigna memoria en el montón para él y devuelve una referencia a ese objeto.

La liberación de memoria se realiza mediante el conteo automático de referencias (ARC — Automatic Reference Counting). Cada objeto mantiene un contador de referencias — la cantidad de referencias activas a él. Cuando se crea una nueva referencia, el contador aumenta, y cuando la referencia se elimina o se vuelve nil, disminuye. Cuando el contador alcanza cero, el objeto se elimina automáticamente de la memoria.

Ejemplo:

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

var person1: Person? = Person(name: "Иван") // contador de referencias = 1
var person2 = person1 // contador de referencias = 2
person1 = nil // contador de referencias = 1
person2 = nil // contador de referencias = 0, el objeto Person se elimina de la memoria

De esta manera, el desarrollador no necesita liberar manualmente la memoria — ARC lo gestiona automáticamente.