Sobes.tech
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.