Junior — Middle
Pode uma referência forte numa entidade levar a fugas de memória?
sobes.tech IA
Resposta da IA
Sim, a presença de ligações fortes entre objetos no iOS pode levar a vazamentos de memória, especialmente se ocorrer um ciclo de referência ( ciclo de retenção). Isso acontece quando dois objetos se mantêm mutuamente por ligações fortes, e o sistema ARC não consegue libertá-los, pois o contador de referências de ambos não chega a zero.
Para evitar esses vazamentos, usam-se ligações fracas (weak) ou sem proprietário (unowned), que não aumentam o contador de referências e permitem quebrar o ciclo.
Exemplo de ciclo de referência:
class Person {
var apartment: Apartment?
}
class Apartment {
var tenant: Person?
}
let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // aqui ocorre um ciclo de retenção
Para evitar o vazamento, pode-se tornar uma das ligações fraca:
class Apartment {
weak var tenant: Person?
}