在设备上使用仪器检测到使用苹果的可达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;
}
我几乎使用可达例如直接从苹果的示例代码,所以我想不通为什么发生这种情况或如何解决呢。
GeneralBlock-3584
泄漏是,根据对开发者论坛苹果官方声明(检查http://devforums.apple.com和介意你的新发展区),不是一个真正的泄漏,其实在仪器的错误。
试着用NSAutoReleasePool包装您的可达性对象。如果它仍然存在请尝试缩窄对泄漏完成与autoreleasepool。
我认为这是一个类似的问题,这question。实际上似乎它的内CFNetwork的一个Bug,它取决于操作系统,所以没有解决方法。苹果已经修复它。