Para que são usadas referências fracas na linguagem de programação Swift?
sobes.tech IA
Resposta da IA
As referências fracas (weak references) em Swift são usadas para evitar ciclos de referências fortes (strong reference cycles), que podem levar a fugas de memória. No sistema de contagem automática de referências (ARC), os objetos permanecem na memória enquanto tiverem referências fortes. Se dois objetos se referirem mutuamente por referências fortes, eles nunca serão libertados.
Uma referência fraca não aumenta o contador de referências do objeto, portanto, se não houver referências fortes, o objeto será libertado e a referência fraca será automaticamente definida como nil. Isto é especialmente útil ao trabalhar com delegados, closures e objetos interligados.
Exemplo de uso de uma referência fraca:
class Person {
var name: String
weak var apartment: Apartment? // referência fraca
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
var tenant: Person? // referência forte
init(unit: String) {
self.unit = unit
}
}
var john: Person? = Person(name: "John")
var unit4A: Apartment? = Apartment(unit: "4A")
john?.apartment = unit4A
unit4A?.tenant = john
john = nil // o objeto Person será libertado, pois apartment é uma referência fraca
unit4A = nil
Assim, as referências fracas ajudam a evitar fugas de memória ao romper ciclos de referências fortes.