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.