Sobes.tech
Junior — Middle

Como é que ocorre a distribuição e libertação de memória para tipos de dados de referência?

sobes.tech IA

Resposta da IA

No iOS, para tipos de referência (por exemplo, classes), a memória é alocada dinamicamente no heap. Quando um objeto de classe é criado, o sistema aloca memória no heap para ele e devolve uma referência a esse objeto.

A libertação de memória ocorre através da contagem automática de referências (ARC — Automatic Reference Counting). Cada objeto mantém um contador de referências — o número de referências ativas a ele. Quando uma nova referência é criada, o contador aumenta, e quando a referência é removida ou se torna nil, diminui. Quando o contador atinge zero, o objeto é automaticamente removido da memória.

Exemplo:

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

var person1: Person? = Person(name: "Иван") // contador de referências = 1
var person2 = person1 // contador de referências = 2
person1 = nil // contador de referências = 1
person2 = nil // contador de referências = 0, o objeto Person é removido da memória

Assim, o desenvolvedor não precisa libertar manualmente a memória — o ARC gere isso automaticamente.