Junior — Middle
Ποιοι είναι οι τύποι διαρροών μνήμης και πώς τους εντοπίζετε;
sobes.tech AI
Απάντηση από AI
Στο iOS υπάρχουν διάφοροι τύποι διαρροών μνήμης:
- Δικυκλικές αναφορές (κύκλοι διατήρησης): όταν δύο αντικείμενα διατηρούν το ένα το άλλο με ισχυρές αναφορές, εμποδίζοντας την απελευθέρωσή τους.
- Διαρροές λόγω λανθασμένης χρήσης των delegate: αν ο delegate δηλωθεί ως ισχυρή αναφορά, μπορεί να προκαλέσει κύκλο.
- Διαρροές λόγω μη απελευθερωμένων πόρων: π.χ. χρονοδιακόπτες, παρατηρητές ειδοποιήσεων που δεν έχουν αφαιρεθεί.
Για την ανίχνευση διαρροών, χρησιμοποιούνται τα εργαλεία του Xcode:
- Instruments (Leaks και Allocations) — παρακολουθούν αντικείμενα που δεν απελευθερώνονται.
- Memory Graph Debugger — οπτικοποιεί τις συνδέσεις μεταξύ αντικειμένων και βοηθά στον εντοπισμό κύκλων.
Παράδειγμα: αν στην κλάση ViewController υπάρχει ισχυρή αναφορά σε χρονοδιακόπτη που δεν σταματά και δεν μηδενίζεται, αυτό μπορεί να οδηγήσει σε διαρροή.