Desarrollador iOS: pregunta de entrevista
¿Cómo gestionas memoria en una app iOS?
La memoria iOS combina propiedad ARC con cachés acotadas y liberación de recursos grandes; usa memory graph e Instruments para ciclos, crecimiento sin límite y asignaciones que sobreviven a su owner.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
La mayor parte del trabajo de memoria en iOS es higiene de propiedad: saber qué objeto posee a cuál, romper ciclos con referencias débiles y liberar recursos grandes como imágenes decodificadas, buffers de vídeo y contextos de Core Data cuando su pantalla desaparece. Las cachés usan NSCache o un límite de tamaño explícito para encogerse bajo presión, y la app responde a los avisos de memoria soltando datos regenerables. El depurador de grafo de memoria muestra quién retiene un objeto sospechoso, las plantillas Allocations y Leaks de Instruments muestran el crecimiento en el tiempo, y el objetivo es una línea de memoria plana tras repetir muchas veces la misma navegación.
Ejemplo
Abrir y cerrar un editor de fotos veinte veces subía la memoria 40 MB por ciclo; el grafo de memoria mostró el editor retenido por un CADisplayLink nunca invalidado. Invalidarlo en viewWillDisappear dejó la línea plana, y las miniaturas pasaron a un NSCache con un límite de coste de 50 MB para que la cuadrícula deje de crecer sin límite.
Errores frecuentes
- Guardar UIImages a resolución completa en un array como caché.
- Ignorar los avisos de memoria y ser terminado por jetsam en dispositivos antiguos.
- Perseguir asignaciones pequeñas en Instruments mientras un view controller retenido acumula cientos de megabytes.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.