Preguntas sobre iOS sobre la herramienta Instrumentos, problema de memory en mi aplicación

Acabo de comenzar a aprender la herramienta de instrumentos, y estoy bastante seguro de que lo que estoy viendo no es bueno. Cuando miro las asignaciones, específicamente la columna "Live Bytes" y "Overall Bytes", veo que el número aumenta continuamente a medida que la aplicación se ejecuta …

Mi aplicación tiene dos controlleres de vista. Una vista de tabla y el segundo controller de visualización muestran información detallada sobre la fila que seleccionaron en la vista de tabla, descargada de Internet.

Seguí haciendo clic en una fila en la vista de la tabla, seguido de hacer clic en el button Atrás en la barra de navigation … y LiveBytes siguió aumentando.

Supongo que esto significa que mis objects no se liberan de la memory … pero corrígeme si me equivoco.

MI PREGUNTA ES: ¿Cómo uso los datos en instrumentos / asignaciones para rastrear este problema de memory? ¿Cómo encuentro que los objects no se liberan de la memory?

Estoy buscando consejos sobre cómo usar estas herramientas para limpiar cualquier problema de memory que tenga mi aplicación.

¡Gracias!

XCODE 4.2.1, deployment en iOS 5.0+

EDIT: Estoy mirando la columna #living y ver objects como UIScrollView boost continuamente … y nunca disminuir. Cuando hago clic en el button Atrás en una barra de navigation, ¿se liberan automáticamente los objects de la memory? ¿Cuándo se lanzan los objects o tengo que hacerlo manualmente? O podría estar encontrando un problema debido al uso de pointers fuertes, haciendo que los objects no se liberen?

Creo que una de las mejores maneras de resolver problemas de memory es usar ARC.

Edit -> Refactor -> Upgrade to Objective-C ARC. 

ARC se encargará de la mayoría de la administración de la memory en su aplicación. Especialmente si su aplicación no parece demasiado compleja, podría eliminar totalmente su problema. Sin embargo, aún debe vigilar los ciclos de retención y escuchar las advertencias de la memory. Si no desea utilizar ARC (que debería) al less ejecute el analizador estático. Su problema puede ser algo simple: el analizador estático puede mostrarle cómo arreglarlo.

Editar:

Mencionaste las vistas de desplazamiento: este podría ser tu problema: Fuga de memory cada vez que se libera UIScrollView

Cuando quiera observar el uso de la memory en un patrón cíclico, está el maravilloso análisis de Heapshot en el instrumento "Asignaciones".

  1. Inicie su aplicación y vaya a un estado pnetworkingeterminado.
  2. En Instrumentos, presione el button "Marcar montón" para crear la "Línea base".
  3. Haz algo en tu aplicación como empujar un controller de vista.
  4. Vuelva al estado pnetworkingeterminado.
  5. Presione nuevamente el button "Marcar montón" para crear un montón.
  6. Repita aproximadamente cinco veces desde el paso 3.

Esto dará como resultado una list de montones, cada uno de los cuales muestra los objects que aún están vivos de ese ciclo. Si su aplicación no tiene pérdidas, no habrá objects en los montones medios.

Los primeros uno o dos ciclos pueden haber calentado algunos cachings, los dos últimos podrían no haber limpiado algunos resources reutilizados. Por eso, generalmente es una buena idea hacer de cuatro a seis montones.

La magia en el análisis del montón radica en el hecho de que los montones muestran los objects filtrados de ciclos anteriores y los eliminan automáticamente cuando los objects se lanzan más tarde. Al contrario del instrumento "Fugas", también encuentra memory abandonada , no solo fugas.

Lo más probable es que haya descartado el arm64 y esté ejecutando su aplicación solo con armv7. Agregue ambos arm64 y armv7 como architectures

La herramienta de perfil tiene un instrumento llamado 'Fugas'. Es similar al instrumento 'Asignaciones' pero muestra el object que no se lanzó. Puede ser que pueda usar la herramienta 'Fugas' para encontrar el object que se retuvo y liberar estos objects.