Junior — Middle
Kokie yra atminties nutekėjimo tipai ir kaip juos nustatyti?
sobes.tech AI
Atsakymas iš AI
iOS turiuose yra keletas atminties nutekėjimo tipų:
- Ciklinės nuorodos (laikymo ciklai): kai du objektai vienas kitą laiko stipriomis nuorodomis, tai trukdo jų laisvavimui.
- Nutekėjimai dėl netinkamo delegatų naudojimo: jei delegatas yra deklaruotas kaip stipri nuoroda, tai gali sukelti ciklą.
- Nutekėjimai dėl neišlaisvintų išteklių: pvz., laikmačiai, pranešimų stebėtojai, kurie nebuvo pašalinti.
Norint aptikti nutekėjimus, naudojami Xcode įrankiai:
- Instruments (Leaks ir Allocations) — stebi objektus, kurie nėra išlaisvinami.
- Memory Graph Debugger — vizualizuoja ryšius tarp objektų ir padeda rasti ciklus.
Pavyzdys: jei ViewController klasėje yra stipri nuoroda į laikmatį, kuris nebevyksta ir nėra nuliniuotas, tai gali sukelti nutekėjimą.