No sueltes automáticamente el hilo principal. Eso equivale a una fuga.
Ejecute Construir y analizar religiosamente. Arreglar advertencias.
El analizador estático no detectará todas sus fugas. Las fugas en los instrumentos ni siquiera detectarán todas tus fugas. Use asignaciones de objetos en instrumentos en el dispositivo , ordene por memoria en vivo y preste atención tanto al total como a los bloques individuales. Cualquier objeto que se quede en las transiciones del controlador de vista debe investigarse. Ejecútelo periódicamente y, si es posible, haga que sus evaluadores también lo hagan.
- ¿Cómo se asegura un inicio de arranque de un juego móvil para que su empresa obtenga ingresos predecibles?
- ¿Cuáles son algunos marcos JavaScript para el desarrollo móvil?
- ¿Por qué las tiendas de aplicaciones móviles no envían el código fuente o el código de byte y compilan al nativo directamente en el dispositivo móvil?
- Cómo ingresar al desarrollo de aplicaciones
- ¿Puedo usar el lenguaje python para desarrollar una aplicación móvil?
Limpie el caché de URL periódicamente, y definitivamente en advertencias de memoria. En esa nota, maneje las advertencias de memoria. Incluso si no hace nada, deje la función de plantilla en la clase con un llamado a super.
No deje muchas imágenes de alta resolución en la memoria. Tiene relativamente poca RAM en el dispositivo y el sistema operativo lo matará si lo excede en teléfonos más antiguos. Las imágenes fuera de la pantalla deben purgarse de la memoria en vivo.
Cuidado con las bibliotecas de terceros. Las bibliotecas de anuncios en particular pueden ser sumideros de memoria y no tiene acceso a su código para depurar. Use iAds (pero si solo usa uno y asegúrese de no ocultarlo con elementos de la interfaz de usuario) o AdMob.
Los delegados deben ser referencias débiles. Eso significa propiedades con asignar, no retener. Esto se debe a que normalmente los delegados retienen los objetos que les delegan, y si ambos se retienen entre sí, obtendrán lo que se llama un ciclo de retención y ninguno liberará al otro. Boom, dos fugas.
Nombre sus variables de instancia con camelCase y sus locales con under_score. Libere todas las variables de instancia al final de la función a menos que ya se hayan publicado automáticamente cuando las obtenga. Libere todas las variables de instancia, incluso IBOutlets y aquellas con propiedades que especifiquen retención, en dealloc. NUNCA olvides la llamada a Super en Dealloc.
Libere los valores antiguos de variables de instancia o locales con un recuento de retención mayor que cero antes de asignar un nuevo valor Siempre. Si la variable es nula, se comerá el mensaje de lanzamiento, y si no, entonces lo posee, por lo que debe liberarlo.