Sobes.tech
Junior — Middle

Jakie są rodzaje wycieków pamięci i jak je wykrywać?

sobes.tech AI

Odpowiedź od AI

W iOS istnieje kilka typów wycieków pamięci:

  • Cykliczne odniesienia (cykle zatrzymania): gdy dwa obiekty utrzymują się nawzajem za pomocą silnych odniesień, co uniemożliwia ich zwolnienie.
  • Wyciek z powodu niewłaściwego użycia delegatów: jeśli delegat jest zadeklarowany jako silne odniesienie, może to prowadzić do cyklu.
  • Wyciek z powodu niezwolnionych zasobów: na przykład timery, obserwatorzy powiadomień, którzy nie zostali usunięci.

Do wykrywania wycieków używa się narzędzi Xcode:

  • Instruments (Leaks i Allocations) — pozwala śledzić obiekty, które nie są zwalniane.
  • Memory Graph Debugger — wizualizuje powiązania między obiektami i pomaga znaleźć cykle.

Przykład: jeśli w klasie ViewController istnieje silne odniesienie do timera, który nie jest zatrzymywany i nie jest zerowany, może to prowadzić do wycieku.