Sobes.tech
Junior — Middle

Má štruktúra alebo trieda metódu na vyčistenie zdrojov alebo deštruktor?

sobes.tech AI

Odpoveď od AI

V Swiftu nemajú štruktúry (struct) destruktory, pretože sú to hodnotové typy a automaticky sa spravujú. Triedy (class) však môžu mať destruktor — metódu deinit, ktorá sa volá pred uvoľnením inštancie z pamäti. V destruktore sa zvyčajne uvoľňujú zdroje, zatvárajú sa súbory, rušia sa odberné odbery atď.

Príklad triedy s destruktorom:

class FileHandler {
    let fileName: String

    init(fileName: String) {
        self.fileName = fileName
        print("Súbor otvorený \(fileName)")
    }

    deinit {
        print("Súbor zatvorený \(fileName)")
    }
}

var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // zavolá deinit

Preto majú len triedy destruktor deinit, štruktúry nie.