Sobes.tech
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:

  1. Liberar recursos associados — por exemplo, fechar ficheiros, parar temporizadores, cancelar pedidos de rede.
  2. Remover observadores e notificações — se o objeto estiver subscrito a notificações ou KVO, deve cancelar a subscrição para evitar fugas.
  3. Definir referências fortes a null — se existirem ligações cíclicas, rompê-las para que o ARC possa libertar a memória.
  4. Realizar limpeza no método deinit — em Swift, o destruidor deinit é 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.