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 λειτουργεί αυτόματα, αλλά χωρίς διακοπές και πρόσθετο κόστος, χαρακτηριστικά των παραδοσιακών συλλεκτών απορριμμάτων.