Sobes.tech
Junior — Middle

Obsahuje struktura nebo třída metodu pro čištění zdrojů nebo destruktor?

sobes.tech AI

Odpověď od AI

Ve Swiftu nem mají struktury (struct) destruktory, protože jsou to hodnotové typy a jsou automaticky spravovány. Třídy (class) však mohou mít destruktor — metodu deinit, která se volá před uvolněním instance z paměti. V destruktoru se obvykle uvolňují zdroje, zavírají soubory, ruší předplatné atd.

Příklad třídy s destruktorom:

class FileHandler {
    let fileName: String

    init(fileName: String) {
        self.fileName = fileName
        print("Soubor otevřen \(fileName)")
    }

    deinit {
        print("Soubor zavřen \(fileName)")
    }
}

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

Proto mají pouze třídy destruktor deinit, struktury nikoliv.