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.