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:
- Rilasciare le risorse associate — ad esempio, chiudere i file, fermare i timer, annullare le richieste di rete.
- Rimuovere osservatori e notifiche — se l’oggetto è iscritto a notifiche o KVO, è necessario disiscriversi per evitare perdite.
- Reimpostare i riferimenti forti a null — se ci sono riferimenti ciclici, romperli in modo che ARC possa liberare la memoria.
- Eseguire la pulizia nel metodo
deinit— in Swift, il distruttoredeinitviene 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.