Junior — Middle
Por que se usam referências fracas e fortes na programação, e em que elas diferem?
sobes.tech IA
Resposta da IA
Na programação, especialmente na gestão de memória, são utilizadas referências fortes (strong) e fracas (weak) para controlar o ciclo de vida dos objetos e prevenir fugas de memória.
- Referência forte mantém o objeto na memória enquanto existir pelo menos uma referência forte. O coletor de lixo não irá removê-lo.
- Referência fraca não impede a remoção do objeto. Se apenas referências fracas permanecerem, ele pode ser liberado da memória.
Isto é importante para evitar referências cíclicas, quando dois objetos referenciam-se mutuamente por referências fortes, e o coletor de lixo não consegue removê-los. Nesses casos, uma das referências é tornada fraca.
Exemplo em Swift:
class Person {
var name: String
weak var apartment: Apartment? // referência fraca
init(name: String) {
self.name = name
}
}
class Apartment {
var unit: String
var tenant: Person? // referência forte
init(unit: String) {
self.unit = unit
}
}
let john = Person(name: "John")
let apt = Apartment(unit: "4A")
john.apartment = apt
apt.tenant = john
Aqui, apartment é uma referência fraca para evitar um ciclo de retenção entre Person e Apartment.