Desarrollo de iPhone: prevención de fugas

votos
4

Cuando ejecuto mi aplicación con Leaks y veo los Detalles Extendidos de cualquiera de las filtraciones, me lleva a una línea particular en mi código, ¡pero no sé qué hacer después de eso!

Por ejemplo, Leaks muestra un malloc en esta línea

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

¡Pero no sé cuál es el problema en la declaración! ¿Puede alguien decirme cómo interpretar esos problemas y evitar filtraciones?

Gracias.

Editar: Con respecto a la pregunta anterior que tuve, NSZombieEnabled se asegura de que no se desasignan los objetos y esto aumenta el uso de la memoria. Por lo tanto, cuando realice pruebas con Leaks, asegúrese de que esta configuración se elimine de su aplicación. Pensé que esto podría ayudar a alguien.

Publicado el 24/01/2009 a las 06:02
fuente por usuario
En otros idiomas...                            


4 respuestas

votos
3

Encontré la respuesta. La respuesta de Fredrik me hizo pensar. Estaba creando una instancia de NSURLResponse y NSError que estaba pasando al método sendSynchronousRequest. De acuerdo con el documento de gestión de memoria del iPhone, esto no debería hacerse. Solo necesitamos pasar una referencia a los objetos NSURLResponse y NSError al método y el método se encarga de crear y liberar los objetos.

Espero que ayude a alguien más. Muchas gracias por las respuestas a todos.

Respondida el 26/01/2009 a las 15:24
fuente por usuario

votos
1

Se suponía que una fuga en el método que mencionas arriba se corrigió para la versión de iPhone OS 2.2. ¿Qué versión del sistema operativo del iPhone estás usando?

Respondida el 24/01/2009 a las 20:28
fuente por usuario

votos
1

¿Liberas los objetos de respuesta y error después de la llamada? Esos posiblemente están asignados en la llamada.

Respondida el 24/01/2009 a las 10:58
fuente por usuario

votos
1

El panel de Detalles extendidos le dará trazas de pila que le muestran la pila en la fuga. En general, un buen lugar para comenzar es mirar sus métodos y el último método de su código en la pila y ver lo que está haciendo en memoria, parece que podría estar reteniendo un objeto. Comience allí por ahora

Respondida el 24/01/2009 a las 07:04
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more