2010-06-16 7 views
7

기기에서 Instruments를 사용하면 앱에서 Apple Reachability 2.0 코드를 사용하여 3.50KB 메모리 누수를 감지합니다. 유출 된 개체는 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; 
} 

내가 꽤 많이 그래서 이런 일이 또는 어떻게 고칠 이유를 알아낼 수 없습니다 바로 애플의 예제 코드에서 도달 가능성 예제를 사용하고 있습니다.

답변

6

GeneralBlock-3584 누출은 개발자 포럼에 공식 사과 문 (http://devforums.apple.com을 확인하고 NDAS 마음), 아닌 실제 누출 악기에 사실의 버그에 따라 있습니다.

1

NSAutoReleasePool을 사용하여 Reachability 객체를 배치하십시오. 그것이 아직도 존재하는 경우에 autoreleasepool를 가진 누출쪽으로 한 좁히기 시도하십시오.

+1

왜? 자신의 스레드를 포크하지 않으면 NSAutoReleasePool이 주위에 있습니다. 그것을 감싸는 것은 도움이되지 않습니다. – GorillaPatch

0

나는 이것이 question과 비슷한 문제라고 생각합니다. 실제로 그것은 CFNetwork 내의 버그이며 OS에 따라 달라집니다 ( ). 따라서 해결 방법은 없습니다. 애플은 그것을 고쳐야한다.

관련 문제