Junior — Middle
¿Qué pasos se deben seguir para completar correctamente la destrucción de un objeto o recurso?
sobes.tech AI
Respuesta de la IA
Para la correcta finalización de la destrucción de un objeto o la liberación de recursos en iOS, se deben seguir los siguientes pasos:
- Liberar recursos relacionados — por ejemplo, cerrar archivos, detener temporizadores, cancelar solicitudes de red.
- Eliminar observadores y notificaciones — si el objeto está suscrito a notificaciones o KVO, es necesario cancelar la suscripción para evitar fugas.
- Establecer enlaces fuertes a null — si hay enlaces cíclicos, romper esos enlaces para que ARC pueda liberar la memoria.
- Realizar limpieza en el método
deinit— en Swift, el destructordeinitse usa para realizar acciones finales antes de destruir el objeto.
Ejemplo:
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() {
// procesamiento
}
deinit {
timer?.invalidate()
NotificationCenter.default.removeObserver(self)
print("MyResource destruido")
}
}
De esta manera, una correcta destrucción garantiza la liberación de recursos y previene fugas de memoria.