在设备上使用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示例,因此我无法弄清楚为什么会发生这种情况或我如何修复它。
答案 0 :(得分:6)
GeneralBlock-3584
泄漏了在仪器中。
答案 1 :(得分:1)
尝试使用NSAutoReleasePool包装Reachability对象。如果它仍然存在,尝试使用自动释放池缩小对泄漏的影响。
答案 2 :(得分:0)
我认为这是与question类似的问题。 实际上它似乎是CFNetwork中的一个Bug,它取决于操作系统, 所以没有解决方法。 Apple必须解决它。