Sobes.tech
Junior — Middle

Μπορείτε να εξηγήσετε τον μηχανισμό αυτόματης διαχείρισης μνήμης στο ARC και πώς απελευθερώνει τα μη χρησιμοποιούμενα αντικείμενα;

sobes.tech AI

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

Το ARC (Αυτόματη Μέτρηση Αναφορών) είναι ένας μηχανισμός διαχείρισης μνήμης στο iOS που παρακολουθεί αυτόματα τον αριθμό των αναφορών σε αντικείμενα και τα απελευθερώνει όταν δεν χρειάζονται πλέον.

Αρχή λειτουργίας:

  • Κάθε αντικείμενο έχει έναν μετρητή αναφορών (αριθμός διατήρησης).
  • Όταν δημιουργείται μια αναφορά σε ένα αντικείμενο, ο μετρητής αυξάνεται.
  • Όταν διαγράφεται μια αναφορά, ο μετρητής μειώνεται.
  • Όταν ο μετρητής φτάσει το μηδέν, το αντικείμενο διαγράφεται αυτόματα από τη μνήμη.

Το ARC λειτουργεί κατά τη φάση της μεταγλώττισης, εισάγοντας κλήσεις retain/release στον κώδικα, επομένως ο προγραμματιστής δεν χρειάζεται να διαχειρίζεται χειροκίνητα τη μνήμη.

Παράδειγμα σε Swift:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

var person1: Person? = Person(name: "Иван") // μετρητής διατήρησης = 1
var person2 = person1 // μετρητής διατήρησης = 2
person1 = nil // μετρητής διατήρησης = 1
person2 = nil // μετρητής διατήρησης = 0, το αντικείμενο Person διαγράφεται

Έτσι, το ARC απελευθερώνει αυτόματα τα αντικείμενα όταν δεν υπάρχουν ενεργές αναφορές.