2009-01-06 9 views
6

Durante el desarrollo de mi aplicación, me he dado cuenta de que la mayoría de los bloqueos de mis aplicaciones se deben a una mala gestión de la memoria.¿Cuál es la mejor manera de realizar un seguimiento de la administración de memoria mientras prueba mi aplicación de iPhone?

Entiendo que puedo imprimir o registrar cuentas retenidas a través de NSLog (@ "Retener recuento es:% d", [myInstance retainCount]);

¿Pero no hay un método mejor y menos manual? ¿Posiblemente una representación visual de tus objetos e instancias?

respondió. Cheers, Adam & Jason. :-)

Respuesta

6

Utilice las herramientas de Asignación de fugas y objetos a través de XCode.

Run > Start with Performance Tool > ... 
2

Como Adam sugiere, Instruments es una herramienta muy útil para este tipo de cosas. Es bastante fácil de usar, pero puede ser un poco abrumador al principio. Sugiero que lea el Instruments User Guide al comenzar. Es bastante fácil de seguir y es útil hasta que haya usado Instruments por un tiempo. Sin embargo, incluso sin leer la guía, Instruments es aún más fácil e intuitivo que tirar el código con llamadas NSLog() e intentar analizar el resultado usted mismo;)

3

Además de las otras respuestas, le recomiendo usar clang para hacer un análisis de memoria estática de tu código. No detectará todos los errores de administración de memoria, pero captura bastante. Si su problema principal parece provenir de errores de administración de memoria, el clang contribuirá en gran medida a encontrar esos errores. Clang es gratis, en http://clang.llvm.org/

0

También encuentro el truco NSZombie útil para rastrear casos de objetos de liberación excesiva.

Básicamente, el enlace describe un "truco" para que los objetos liberados sean reemplazados por objetos NSZombie que si se vuelven a lanzar lanzan excepciones.

Luego puede usar Instruments para rastrear hacia donde se asignó el objeto.

Cuestiones relacionadas