Sobes.tech
Junior — Middle

Ποιοι είναι οι τύποι διαρροών μνήμης και πώς τους εντοπίζετε;

sobes.tech AI

Απάντηση από AI

Στο iOS υπάρχουν διάφοροι τύποι διαρροών μνήμης:

  • Δικυκλικές αναφορές (κύκλοι διατήρησης): όταν δύο αντικείμενα διατηρούν το ένα το άλλο με ισχυρές αναφορές, εμποδίζοντας την απελευθέρωσή τους.
  • Διαρροές λόγω λανθασμένης χρήσης των delegate: αν ο delegate δηλωθεί ως ισχυρή αναφορά, μπορεί να προκαλέσει κύκλο.
  • Διαρροές λόγω μη απελευθερωμένων πόρων: π.χ. χρονοδιακόπτες, παρατηρητές ειδοποιήσεων που δεν έχουν αφαιρεθεί.

Για την ανίχνευση διαρροών, χρησιμοποιούνται τα εργαλεία του Xcode:

  • Instruments (Leaks και Allocations) — παρακολουθούν αντικείμενα που δεν απελευθερώνονται.
  • Memory Graph Debugger — οπτικοποιεί τις συνδέσεις μεταξύ αντικειμένων και βοηθά στον εντοπισμό κύκλων.

Παράδειγμα: αν στην κλάση ViewController υπάρχει ισχυρή αναφορά σε χρονοδιακόπτη που δεν σταματά και δεν μηδενίζεται, αυτό μπορεί να οδηγήσει σε διαρροή.