Sobes.tech
Junior — Middle

Quali passaggi devono essere seguiti per completare correttamente la distruzione di un oggetto o risorsa?

sobes.tech AI

Risposta dell'AI

Per una corretta distruzione di un oggetto o per il rilascio delle risorse in iOS, è necessario seguire i seguenti passaggi:

  1. Rilasciare le risorse associate — ad esempio, chiudere i file, fermare i timer, annullare le richieste di rete.
  2. Rimuovere osservatori e notifiche — se l’oggetto è iscritto a notifiche o KVO, è necessario disiscriversi per evitare perdite.
  3. Reimpostare i riferimenti forti a null — se ci sono riferimenti ciclici, romperli in modo che ARC possa liberare la memoria.
  4. Eseguire la pulizia nel metodo deinit — in Swift, il distruttore deinit viene usato per eseguire azioni finali prima di distruggere l’oggetto.

Esempio:

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() {
        // elaborazione
    }

    deinit {
        timer?.invalidate()
        NotificationCenter.default.removeObserver(self)
        print("MyResource deallocato")
    }
}

In questo modo, una corretta distruzione garantisce il rilascio delle risorse e previene perdite di memoria.