iOS: gestión de la memoria

La administración de memoria en iOS no era inicialmente ARC (Conteo automático de referencias), donde tenemos que retener y liberar los objetos. Ahora, es compatible con ARC y no tenemos que retener y liberar los objetos. Xcode se encarga del trabajo automáticamente en tiempo de compilación.

Problemas de gestión de la memoria

Según la documentación de Apple, los dos problemas principales en la gestión de la memoria son:

  • Liberar o sobrescribir datos que aún están en uso. Provoca daños en la memoria y, por lo general, provoca que la aplicación se bloquee o, lo que es peor, se corrompan los datos del usuario.

  • No liberar datos que ya no están en uso provoca pérdidas de memoria. Cuando la memoria asignada no se libera aunque nunca se vuelva a utilizar, se conoce como pérdida de memoria. Las fugas hacen que su aplicación utilice cantidades de memoria cada vez mayores, lo que a su vez puede provocar un rendimiento deficiente del sistema o (en iOS) la finalización de su aplicación.

Reglas de administración de memoria

  • Somos dueños de los objetos que creamos y, posteriormente, tenemos que liberarlos cuando ya no sean necesarios.

  • Utilice Retener para obtener la propiedad de un objeto que no creó. También debe liberar estos objetos cuando no los necesite.

  • No suelte los objetos que no le pertenecen.

Manejo de la memoria en ARC

No es necesario utilizar liberación y retención en ARC. Por lo tanto, todos los objetos del controlador de vista se liberarán cuando se elimine el controlador de vista. Del mismo modo, los subobjetos de cualquier objeto se liberarán cuando se liberen. Tenga en cuenta que si otras clases tienen una fuerte referencia a un objeto de una clase, no se publicará toda la clase. Por tanto, se recomienda utilizar propiedades débiles para los delegados.

Herramientas de gestión de memoria

Podemos analizar el uso de la memoria con la ayuda de los instrumentos de la herramienta Xcode. Incluye herramientas como Monitor de actividad, Asignaciones, Fugas, Zombis, etc.

Pasos para analizar las asignaciones de memoria

Step 1 - Abra una aplicación existente.

Step 2 - Seleccione Producto y luego Perfil como se muestra a continuación.

Step 3 - Seleccione Asignaciones en la siguiente pantalla que se muestra a continuación y seleccione Perfil.

Step 4 - Veremos la asignación de memoria para diferentes objetos como se muestra a continuación.

Step 5 - Puede cambiar entre los controladores de vista y comprobar si la memoria se libera correctamente.

Step 6 - De manera similar, en lugar de asignaciones, podemos usar el Monitor de actividad para ver la memoria total asignada para la aplicación.

Step 7 - Estas herramientas nos ayudan a acceder a nuestro consumo de memoria y localizar los lugares donde se han producido posibles fugas.