Grande perdita di memoria utilizzando la raggiungibilità
-
27-09-2019 - |
Domanda
Utilizzando gli strumenti sul dispositivo viene rilevata una perdita di memoria di 3,50 KB utilizzando il codice Reachability 2.0 di Apple nella mia app.L'oggetto trapelato è GeneralBlock-3584.Lo strumento leak punta al seguente codice:
- (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;
}
Sto praticamente utilizzando l'esempio Reachability direttamente dal codice di esempio Apple, quindi non riesco a capire perché ciò sta accadendo o come risolverlo.
Soluzione
GeneralBlock-3584
Le perdite sono, secondo le dichiarazioni ufficiali di Apple sui forum degli sviluppatori (controllare http://devforums.apple.com, e fai attenzione ai tuoi NDA), non una vera fuga di notizie e in effetti un bug negli strumenti.
Altri suggerimenti
Prova avvolgendo l'oggetto di raggiungibilità con NSAutoreleasePool. Se ancora esiste prova a restringere fatto verso la perdita con l'autoreleasepool.
Credo che questo sia un problema simile a questo domanda . In realtà sembra che il suo un Bug all'interno CFNetwork e dipende dal sistema operativo, quindi non c'è alcuna soluzione. Apple ha per risolvere il problema.