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.