Iphone 使用可达性的大内存泄漏

Iphone 使用可达性的大内存泄漏,iphone,xcode,memory,memory-leaks,reachability,Iphone,Xcode,Memory,Memory Leaks,Reachability,通过使用设备上的仪器,它在我的应用程序中使用苹果的可达性2.0代码检测到3.50KB的内存泄漏。泄漏的对象是GeneralBlock-3584。泄漏工具指向以下代码: - (BOOL) startNotifer { BOOL retVal = NO; SCNetworkReachabilityContext context = {0, self, NULL, NULL, NULL}; if(SCNetworkReachabilitySetCallback(reach

通过使用设备上的仪器,它在我的应用程序中使用苹果的可达性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;
}

我基本上是直接使用苹果示例代码中的可达性示例,因此我不知道为什么会发生这种情况,也不知道如何解决它。

尝试用NSAutoReleasePool包装您的可达性对象。如果它仍然存在,试着用自动释放池缩小泄漏。

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

通用Block-3584
根据苹果官方在开发者论坛上的声明(请检查,注意你的NDA),泄漏不是真正的泄漏,事实上是仪器中的错误。

为什么?除非你有自己的分支,否则会有一个NSAutoReleasePool。把它包起来也没用。