7
votes

Using Instruments on the device it detects a 3.50 KB memory leak using Apple's Reachability 2.0 code in my app. The Leaked Object is GeneralBlock-3584. The leaks tool points to the following code:

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

I'm pretty much using the Reachability example straight from the Apple example code so I can't figure out why this is happening or how I fix it.

3

3 Answers

6
votes

GeneralBlock-3584 leaks are, according to official Apple statements on the developer forums (check http://devforums.apple.com, and mind your NDAs), not a real leak and in fact a bug in Instruments.

1
votes

Try wrapping your Reachability object with NSAutoReleasePool. If it still exist try narrowing done towards the Leak with the autoreleasepool.

0
votes

I think this is a similar problem to this question . Actually it seems that its a Bug within CFNetwork and it depends on the OS, so there is no workaround. Apple has to fix it.