Sobes.tech
Junior — Middle

Consegues explicar quais são os tipos de fugas de memória nas aplicações?

sobes.tech IA

Resposta da IA

Nos aplicações iOS, os principais tipos de fugas de memória estão relacionados com uma gestão incorreta das referências aos objetos:

  • Ciclos de retenção fortes (Strong Reference Cycles) — quando dois objetos têm referências fortes um ao outro, e nenhum deles pode ser libertado.
  • Fugas devido a closures (Closures) — se uma closure captura self com uma referência forte, isso pode levar a um ciclo de retenção.
  • Recursos não libertados — objetos que não são libertados devido à ausência de chamada a deinit ou uso incorreto.

Exemplo de ciclo de retenção forte:

class Person {
    var apartment: Apartment?
}

class Apartment {
    var tenant: Person?
}

let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // ciclo de retenção forte

Para evitar isso, usam-se referências fracas (weak) ou não universais (unowned).