Sobes.tech
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ą.