Cómo observar las advertencias de poca memoria en su aplicación para ios

Incluso si usted ha hecho todo correctamente, en una gran aplicación para iOS, simplemente puede quedarse sin memoria. Cuando se produce esta situación, el sistema envía una notificación de baja memoria para su aplicación - y es algo que se debe prestar atención. Si no lo hace, es una receta segura para el desastre. UIKit proporciona varias maneras para que usted para configurar su aplicación para que reciba las notificaciones oportunas con poca memoria:

  • Invalidar los métodos didReceiveMemoryWarning en su encargo UIViwComtroller subclase.

  • Implementar el applicationDidReceiveMemoryWarning: método de su aplicación delegue.

  • Registrarse para recibir el UIApplicationDidReceiveMemoryWarningNotification: notificación.

El método didReceiveMemoryWarning

los didReceiveMemoryWarning método se envía al controlador de vista cuando la aplicación recibe una advertencia de memoria. Su puesta en práctica de este método debe hacer lo que pueda para reducir el uso de memoria. Esto puede implicar medidas drásticas como las vistas en realidad cierre, pero hay muchos otros pasos que puede tomar que dependen de su controlador de vista específico y sus puntos de vista.

Por ejemplo, si tiene datos y objetos almacenados, es posible que puedan ser retirados y ajustar a cero si se puede volver a crearlos, según sea necesario.

El applicationDidReceive MemoryWarning: método

Su delegado aplicación debe establecer las referencias a objetos que puede de manera segura la libertad de nulo.

El UIApplicationDidReceiveMemory WarningNotification: Notificación

notificaciones de memoria baja se envían al Centro de Notificaciones, donde se centralizan todas las notificaciones. Un objeto que quiere informarse sobre cualquier notificación en sí registros al Centro de Notificación al decirle lo que la notificación que quiere ser informado sobre, y una bloquear que se llamará cuando se eleva la notificación. En lugar de un bloque, se puede suministrar un método objetivo para ser llamado.

Un objeto del modelo, por ejemplo, entonces podría liberar estructuras de datos u objetos de su propiedad que no necesita de inmediato y se puede volver a crear más adelante mediante el establecimiento de referencias a nulo.

Para aquellos de ustedes que son curiosos, en su objeto de modelo, se podría añadir lo siguiente:

[[NSNotificationCenter defaultCenter] addObserverForName: UIApplicationDidReceiveMemoryWarningNotificationobject: [UIApplication sharedApplication] cola: nilusingBlock: ^ (NSNotification * entr) {//su código aquí}] -

Puede probar applicationDidReceiveMemoryWarning: y UIApplicationDidReceiveMemoryWarningNotification: En el simulador por la elección de hardware → Simular Advertencia de memoria.

Recogiendo la estrategia de gestión de memoria adecuada para su aplicación

Cada una de estas estrategias da una parte diferente de su aplicación la oportunidad de liberar la memoria que ya no necesita (o no es necesario en este momento). ¿Cómo se consigue realmente estas estrategias de trabajo para usted depende de la arquitectura de su aplicación, por lo que tendrá que explorar por su cuenta.

No liberar memoria suficiente resultará en iOS el envío de su aplicación el applicationWillTerminate: mensaje y cerrar la aplicación abajo. Para muchas aplicaciones, sin embargo, la mejor defensa es un buen ataque, lo que significa que necesita para administrar su memoria con eficacia y eliminar las fugas de memoria en su código siguiendo las reglas ARC.

Para las pruebas, poner en práctica todos estos métodos y lugar NSLog declaraciones en ellos, junto con los puntos de corte para que pueda ver los problemas de memoria a medida que ocurren. Es fácil de localizar lugares donde se puede liberar memoria, pero es más eficaz para hacer frente a los que proporcionan el mayor partido de su inversión programación.

Artículos Relacionados