Sobes.tech
Junior — Middle

Millised on mälupõhised lekked ja kuidas neid tuvastada?

sobes.tech AI

Vastus AI-lt

iOS-is on mitu tüüpi mälulekke:

  • Tsüklilised viited (hoidmis tsüklid): kui kaks objekti hoiavad üksteist tugeva viitega, takistades nende vabastamist.
  • Lekkeid vale kasutamise tõttu delegaatidega: kui delegaat on deklareeritud kui tugev viide, võib see põhjustada tsükli.
  • Lekkeid vabastamata ressursside tõttu: näiteks ajastajad, teavituste jälgijad, mida ei ole eemaldatud.

Lekkeid tuvastamiseks kasutatakse Xcode tööriistu:

  • Instruments (Leaks ja Allocations) — jälgib objekte, mida ei vabastata.
  • Memory Graph Debugger — visualiseerib objektide vahelised ühendused ja aitab leida tsükleid.

Näide: kui ViewController klassis on tugev viide ajastajale, mis ei peatu ega nulli, võib see põhjustada lekked.