Junior — Middle
Έχει η δομή ή η κλάση μια μέθοδο καθαρισμού πόρων ή έναν καταστροφέα;
sobes.tech AI
Απάντηση από AI
Στη Swift, οι δομές (struct) δεν έχουν καταστροφείς, καθώς είναι τύποι αξίας και διαχειρίζονται αυτόματα. Οι κλάσεις (class), από την άλλη, μπορούν να έχουν έναν καταστροφέα — τη μέθοδο deinit, που καλείται πριν από την απελευθέρωση του αντικειμένου από τη μνήμη. Στον καταστροφέα, συνήθως απελευθερώνονται πόροι, κλείνουν αρχεία, ακυρώνονται συνδρομές κ.λπ.
Παράδειγμα κλάσης με καταστροφέα:
class FileHandler {
let fileName: String
init(fileName: String) {
self.fileName = fileName
print("Άνοιξε το αρχείο \(fileName)")
}
deinit {
print("Κλείσιμο αρχείου \(fileName)")
}
}
var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // καλεί το deinit
Επομένως, μόνο οι κλάσεις έχουν καταστροφέα deinit, οι δομές όχι.