7

在设备上使用 Instruments,它会在我的应用程序中使用 Apple 的 Reachability 2.0 代码检测到 3.50 KB 的内存泄漏。泄露的对象是 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 示例代码中的 Reachability 示例,所以我无法弄清楚为什么会发生这种情况或如何修复它。

4

3 回答 3

6

GeneralBlock-3584根据 Apple 在开发者论坛上的官方声明(请查看http://devforums.apple.com,并注意您的 NDA),泄漏并不是真正的泄漏,实际上是 Instruments 中的错误。

于 2010-07-06T03:25:52.020 回答
1

尝试用 NSAutoReleasePool 包装你的 Reachability 对象。如果它仍然存在,请尝试使用自动释放池缩小泄漏范围。

于 2010-06-22T13:29:18.163 回答
0

我认为这是与此问题类似的问题。实际上它似乎是 CFNetwork 中的一个错误,它取决于操作系统,所以没有解决方法。苹果必须修复它。

于 2010-06-25T18:27:53.593 回答