Junior — Middle
Πώς μπορεί να γίνει μια αδύναμη αναφορά σε μια γλώσσα προγραμματισμού;
sobes.tech AI
Απάντηση από AI
Στο iOS (Swift), για τη δημιουργία μιας αδύναμης αναφοράς χρησιμοποιείται η λέξη-κλειδί weak. Μια αδύναμη αναφορά δεν αυξάνει τον μετρητή αναφορών του αντικειμένου, βοηθώντας στην αποφυγή κύκλων διατήρησης και διαρροών μνήμης.
Παράδειγμα:
class Person {
var name: String
weak var apartment: Apartment? // αδύναμη αναφορά
init(name: String) {
self.name = name
}
}
class Apartment {
let unit: String
var tenant: Person? // ισχυρή αναφορά
init(unit: String) {
self.unit = unit
}
}
// Χρήση:
let john = Person(name: "John")
let unit4A = Apartment(unit: "4A")
john.apartment = unit4A
unit4A.tenant = john
Σε αυτό το παράδειγμα, το Person περιέχει μια αδύναμη αναφορά σε Apartment για να αποφευχθεί ένας κύκλος διατήρησης μεταξύ Person και Apartment. Αν και οι δύο αναφορές ήταν ισχυρές, τα αντικείμενα δεν θα απελευθερώνονταν από τη μνήμη.
Σημαντικό: οι αδύναμες αναφορές πρέπει να είναι προαιρετικές (?), καθώς το αντικείμενο στο οποίο αναφέρονται μπορεί να διαγραφεί.