2009-01-19 9 views

Respuesta

7

Si su aplicación recibe una advertencia de memoria (como en el método didReceiveMemoryWarning del controlador de vista), debe liberar cualquier información no crítica. Cualquier cosa que estés usando que esté almacenada en la memoria caché, por ejemplo, o que pueda ser regenerada, debería ser abandonada.

Por ejemplo, si su aplicación reduce algunos números y almacena el resultado en una gran matriz, si no está utilizando activamente esa matriz, debe liberarla. Luego, regenere cuando lo necesite nuevamente.

Un poco más de información está aquí: Observing Low-Memory Warnings

+0

Enlace movido ... https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ApplicationEnvironment/chapter_3_section_5.html – estobbart

4

He escuchado informalmente que se emiten advertencias cuando su aplicación alcanza unos 22 MB. (Se incluye cualquier memoria asignada: el iPhone mantiene todo en la memoria RAM física y no envía la página a ningún otro almacenamiento). Dado que el teléfono solo tiene 128 MB de RAM total, esto parece plausible.

Ese límite no incluye la memoria utilizada por las bibliotecas de sistema compartido, como el tiempo de ejecución de Objective-C. Y aunque no estoy completamente seguro de esto, no creo que el uso de memoria de WebKit esté incluido para el componente UIWebView, ya que creo que WebKit siempre está cargado (pero de nuevo, no estoy 100% seguro de eso).

Lo mejor que puede hacer cuando alcanza este límite es liberar todo lo que pueda regenerar o volver a leer fácilmente desde archivos de entrada, como vistas, imágenes y datos en caché.

+0

Sí que parece correcto basado en mi experiencia. Sin embargo, no hay ninguna pista sobre Safari usando su propia memoria. – schwa

Cuestiones relacionadas