Junior — Middle
Qual é a diferença entre os tipos de referências Strong e Weak na gestão de memória e no modelo de referência?
sobes.tech IA
Resposta da IA
Uma referência forte é uma referência normal forte a um objeto, que aumenta o contador de referências (contagem de retenção) desse objeto. Enquanto existir pelo menos uma referência forte, o objeto não será removido da memória.
Uma referência fraca é uma referência fraca, que não aumenta o contador de referências do objeto. Ela é usada para evitar ciclos de retenção. Se o objeto ao qual a referência fraca aponta for removido, a referência fraca é automaticamente definida como nil.
Exemplo em Swift:
class Person {
var name: String
init(name: String) { self.name = name }
var apartment: Apartment?
}
class Apartment {
let unit: String
weak var tenant: Person? // referência fraca para evitar ciclo
init(unit: String) { self.unit = unit }
}
let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john // referência fraca
Aqui, a referência fraca tenant não mantém o objeto Person, o que permite evitar vazamentos de memória.