Sobes.tech
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, οι δομές όχι.