2010-06-16 4 views
7

Используя инструменты на устройстве, он обнаруживает утечку памяти 3,50 КБ с использованием кода Apple Reachability 2.0 в моем приложении. Просочившийся объект - это GeneralBlock-3584. Утечки инструмент указывает на следующий код:Утечка большой памяти с использованием достижимости

- (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; 
} 

Я довольно много, используя пример достижимости прямо из кода примера Apple, так что я не могу понять, почему это происходит и как это исправить.

ответ

6

GeneralBlock-3584 утечки, согласно официальным заявлениям Apple, на форумах разработчиков (проверить http://devforums.apple.com, и ум вашего неразглашения), не реальной утечка и в самом деле ошибки в инструментах.

1

Попробуйте обернуть ур Объект достижимости с помощью NSAutoReleasePool. если он все еще существует, попытайтесь сузить достигнутый к утечке с autoreleasepool.

+1

Почему? Если вы не разветвили свою собственную нить, вокруг будет NSAutoReleasePool. Обертка это не помогло бы. – GorillaPatch

0

Я думаю, что это аналогичная проблема для этого question. На самом деле кажется, что его ошибка в CFNetwork, и это зависит от ОС, , поэтому нет обходного пути. Apple должна это исправить.