Junior — Middle
Quais passos devem ser seguidos para uma destruição correta de um objeto ou recurso?
sobes.tech IA
Resposta da IA
Para a correta destruição de um objeto ou libertação de recursos no iOS, deve seguir-se os seguintes passos:
- Liberar recursos associados — por exemplo, fechar ficheiros, parar temporizadores, cancelar pedidos de rede.
- Remover observadores e notificações — se o objeto estiver subscrito a notificações ou KVO, deve cancelar a subscrição para evitar fugas.
- Definir referências fortes a null — se existirem ligações cíclicas, rompê-las para que o ARC possa libertar a memória.
- Realizar limpeza no método
deinit— em Swift, o destruidordeinité usado para realizar ações finais antes de destruir o objeto.
Exemplo:
class MyResource {
var timer: Timer?
init() {
timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
print("Tick")
}
NotificationCenter.default.addObserver(self, selector: #selector(handleNotification), name: .someNotification, object: nil)
}
@objc func handleNotification() {
// processamento
}
deinit {
timer?.invalidate()
NotificationCenter.default.removeObserver(self)
print("MyResource destruído")
}
}
Assim, uma destruição correta garante a libertação de recursos e previne fugas de memória.