Sobes.tech
Junior — Middle

Můžeš vysvětlit, jaké typy úniků paměti v aplikacích existují?

sobes.tech AI

Odpověď od AI

V aplikacích iOS jsou hlavní typy úniků paměti spojeny s nesprávnou správou odkazů na objekty:

  • Silové cykly odkazů (Strong Reference Cycles) — když dva objekty mají silné odkazy na sebe navzájem a žádný z nich nemůže být uvolněn.
  • Úniky způsobené uzávěry (Closures) — pokud uzávěr zachytí self silnou referencí, může dojít ke cyklu odkazů.
  • Nepuštěné zdroje — objekty, které nejsou uvolněny kvůli absenci volání deinit nebo nesprávnému použití.

Příklad silového cyklu odkazů:

class Person {
    var apartment: Apartment?
}

class Apartment {
    var tenant: Person?
}

let person = Person()
let apartment = Apartment()
person.apartment = apartment
apartment.tenant = person // silový cyklus odkazů

Aby se tomu zabránilo, používají se slabé (weak) nebo neuniverzální (unowned) odkazy.