Sobes.tech
Junior — Middle

A estrutura ou classe possui um método de limpeza de recursos ou um destruidor?

sobes.tech IA

Resposta da IA

No Swift, as estruturas (struct) não têm destrutores, pois são tipos de valor geridos automaticamente. As classes (class), por outro lado, podem ter um destrutor — o método deinit, que é chamado antes de libertar a instância da memória. No destrutor, normalmente, libertam-se recursos, fecham-se ficheiros, cancelam-se subscrições, etc.

Exemplo de uma classe com destrutor:

class FileHandler {
    let fileName: String

    init(fileName: String) {
        self.fileName = fileName
        print("Ficheiro aberto \(fileName)")
    }

    deinit {
        print("Ficheiro fechado \(fileName)")
    }
}

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

Assim, apenas as classes têm um destrutor deinit, as estruturas não.