Tabla de contenido:
- El método didReceiveMemoryWarning
- ApplicationDidReceive MemoryWarning: method
- UIApplicationDidReceiveMemory WarningNotification: notification
- Escoger la estrategia correcta de gestión de memoria para su aplicación
Video: ALMACENAMIENTO CASI LLENO | Solución 2024
Incluso si ha hecho todo correctamente, en una aplicación grande de iOS, es posible que simplemente se quede sin memoria. Cuando ocurre esa situación, el sistema envía una notificación de baja memoria a su aplicación, y es algo a lo que debe prestarle atención. Si no lo hace, es una receta confiable para el desastre. UIKit proporciona varias formas de configurar su aplicación para que reciba notificaciones oportunas de memoria baja:
-
Anule los métodos didReceiveMemoryWarning en su subclase UIViwComtroller personalizada.
-
Implemente el método applicationDidReceiveMemoryWarning: de su aplicación delegada.
-
Regístrese para recibir la notificación UIApplicationDidReceiveMemoryWarningNotification:
El método didReceiveMemoryWarning
El método didReceiveMemoryWarning se envía al controlador de vista cuando la aplicación recibe una advertencia de memoria. La implementación de este método debe hacer todo lo posible para reducir el uso de la memoria. Esto puede implicar pasos drásticos, como el cierre de vistas, pero hay muchos otros pasos que puede seguir que dependen de su controlador de vista específico y sus vistas.
Por ejemplo, si ha almacenado datos y objetos, es posible que puedan eliminarse y establecerse en cero si puede recrearlos según sea necesario.
ApplicationDidReceive MemoryWarning: method
El delegado de su aplicación debe establecer cualquier referencia a los objetos que pueden ser libres de nulos.
UIApplicationDidReceiveMemory WarningNotification: notification
Las notificaciones con poca memoria se envían al Centro de notificaciones, donde todas las notificaciones están centralizadas. Un objeto que desea recibir información sobre cualquier notificación se registra en el Centro de notificaciones al indicar la notificación sobre la que desea recibir información, y se debe llamar a un bloque cuando se genera la notificación. En lugar de un bloque, puede suministrar un método de destino para ser llamado.
Un objeto modelo, por ejemplo, podría liberar estructuras de datos u objetos de su propiedad que no necesite de inmediato y pueda volver a crearse más tarde configurando las referencias como nulas.
Para aquellos de ustedes que sienten curiosidad, en su objeto modelo, puede agregar lo siguiente:
[[NSNotificationCenter defaultCenter] addObserverForName: UIApplicationDidReceiveMemoryWarningNotification object: [UIApplication sharedApplication] queue: nil usingBlock: ^ (NSNotification * notif) {// su código aquí }];
Puede probar applicationDidReceiveMemoryWarning: y UIApplicationDidReceiveMemoryWarningNotification: en el simulador seleccionando Hardware → Simular advertencia de memoria.
Escoger la estrategia correcta de gestión de memoria para su aplicación
Cada una de estas estrategias le da a una parte diferente de su aplicación la oportunidad de liberar la memoria que ya no necesita (o que no necesita en este momento). Cómo logra que estas estrategias trabajen para usted depende de la arquitectura de su aplicación, por lo que tendrá que explorar eso por su cuenta.
Si no se libera suficiente memoria, iOS enviará a su aplicación la aplicaciónWillTerminate: mensaje y se cerrará la aplicación. Sin embargo, para muchas aplicaciones, la mejor defensa es una buena ofensa, lo que significa que debes administrar tu memoria de manera efectiva y eliminar cualquier pérdida de memoria en tu código siguiendo las reglas de ARC.
Para probar, implemente todos estos métodos y coloque las declaraciones NSLog en ellos junto con los puntos de interrupción para que pueda ver los problemas de memoria a medida que ocurren. Es fácil identificar los lugares en los que puede liberar memoria, pero es más eficiente abordar los que proporcionan la mayor inversión para su inversión de programación.