2010-06-16 12 views
7

Usando instrumentos en el dispositivo, detecta una fuga de memoria de 3,50 KB con el código Reachability 2.0 de Apple en mi aplicación. El objeto filtrado es GeneralBlock-3584. Los puntos de herramientas filtraciones a la siguiente código:Fuga de memoria grande con accesibilidad

- (BOOL) startNotifer 
{ 
    BOOL retVal = NO; 
    SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL}; 
    if(SCNetworkReachabilitySetCallback(reachabilityRef, ReachabilityCallback, &context)) 
    { 
     // THIS IS LINE OF CODE WHERE THE LEAK OCCURS: 
     if(SCNetworkReachabilityScheduleWithRunLoop(reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)) 
     { 
      retVal = YES; 
     } 
    } 
    return retVal; 
} 

estoy más o menos utilizando el ejemplo de accesibilidad directamente desde el ejemplo de código de Apple así que no puedo entender por qué esto está ocurriendo o cómo lo arreglo.

Respuesta

6

GeneralBlock-3584 fugas son, de acuerdo con las declaraciones de Apple oficiales en los foros de desarrolladores (comprobar http://devforums.apple.com, y cuida tus NDA), no es una verdadera fuga y, de hecho, un error de un instrumento.

1

Pruebe envolviendo su objeto Accesibilidad con NSAutoReleasePool. si aún existe, intente reducir el límite hacia la fuga con el grupo de liberación automática.

+1

¿Por qué? A menos que haya bifurcado su propio hilo, existe una NSAutoReleasePool. Envolverlo no ayudaría. – GorillaPatch

0

Creo que este es un problema similar al question. En realidad, parece que es un error dentro de CFNetwork y depende del sistema operativo, , por lo que no hay solución. Apple tiene que arreglarlo.