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.