Sobes.tech
Junior — Middle

Υπάρχει αυτόματη συλλογή απορριμμάτων στη Swift, παρόμοια με το GC σε άλλες γλώσσες;

sobes.tech AI

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

Στη Swift, δεν χρησιμοποιείται η αυτόματη συλλογή απορριμμάτων (GC) με την κλασική έννοια, όπως σε Java ή C#. Αντ' αυτού, η Swift εφαρμόζει ένα σύστημα αυτόματης καταμέτρησης αναφορών (ARC — Automatic Reference Counting). Το ARC παρακολουθεί αυτόματα τον αριθμό των αναφορών σε ένα αντικείμενο και απελευθερώνει τη μνήμη όταν δεν υπάρχουν πλέον αναφορές.

Παράδειγμα:

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

var person1: Person? = Person(name: "Ivan")
var person2 = person1 // αυξάνει τον μετρητή αναφορών
person1 = nil // το αντικείμενο εξακολουθεί να ζει, επειδή το person2 αναφέρεται σε αυτό
person2 = nil // τώρα το αντικείμενο απελευθερώνεται

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