Junior — Middle
Pode explicar como ocorre a liberação de memória ocupada por um objeto dentro do sistema?
sobes.tech IA
Resposta da IA
No iOS, a libertação de memória de objetos ocorre principalmente através do mecanismo ARC (Contagem Automática de Referências).
Cada objeto na memória tem um contador de referências: o número de referências ativas a ele. Quando uma referência a um objeto é criada, o contador aumenta; quando a referência é removida, diminui. Quando o contador chega a 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: "Alex") // 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 é liberado
Se houver referências cíclicas (por exemplo, dois objetos referindo-se um ao outro), o ARC não consegue liberar a memória automaticamente. Para resolver isso, usam-se referências fracas (weak) ou não proprietárias (unowned), que não aumentam o contador.