0
我在第一个iphone sdk项目的最后阶段。我一直在努力从我的应用程序中删除内存泄漏,并且大部分都成功了。但是我在那里挣扎着。我有一个联系人屏幕,其中包含一个提取网页视图的按钮,但只有在有网络连接的情况下。如果没有警报弹出。这在实践中运行良好,但是l-e-a-k-s。使用UIwebview时发生内存泄漏
所有泄漏指向代码中的相同位置。这里是第一个代码示例(文书指向第一这些行):
BOOL nett=[self connectedToNetwork];
if (!nett)
{
errorView=[[UIAlertView alloc] initWithTitle:@"Netverksfeil" message:@"Nettet er nede" delegate:self
cancelButtonTitle:@"Filler´n!" otherButtonTitles:nil];
[errorView show];
[errorView release];
}
else{
iCodeBrowserViewController *browserView=[[iCodeBrowserViewController alloc]initWithNibName:@"iCodeBrowserViewController" bundle:[NSBundle mainBundle]];
[[self navigationController] pushViewController:browserView animated:YES];
[browserView release];
}
我假定意味着,泄漏的地方,功能内部...
下一个点仪器点是在此示例中:
//创建零阿迪
- (BOOL) connectedToNetwork{ struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
// Recover reachability flags
SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
SCNetworkReachabilityFlags flags;
BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
CFRelease(defaultRouteReachability);
if (!didRetrieveFlags)
{
printf("Error. Could not recover network reachability flags\n");
return 0;
}
BOOL isReachable = flags & kSCNetworkFlagsReachable;
BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
BOOL nonWiFi = flags & kSCNetworkReachabilityFlagsTransientConnection;
return ((isReachable && !needsConnection) || nonWiFi) ?
(([[[NSURLConnection alloc] initWithRequest:[NSURLRequest
requestWithURL: [NSURL URLWithString:@"http://www.apple.com/"]
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20.0]
delegate:self]autorelease]) ? YES : NO) : NO;}
这条线是具体:
return ((isReachable && !needsConnection) || nonWiFi) ?
你们中的任何人都可以看到这个代码泄漏了什么吗?我从其他地方复制了这部分,并设法稍微改变它。但我必须承认,我不明白该功能中的所有代码...
感谢您的咨询!但是,我无法找到“构建和分析”。看来这个功能只是在Xcode 3.2中,而我收集的,只能安装在雪豹(我只有豹)。 但我会尝试按照你的建议拆分它,并从那里尝试! – Ezop 2009-11-11 18:17:56
我有XCode 3.1.4,顺便说一句... – Ezop 2009-11-11 19:26:55
你是对的,它只是在Xcode 3.2或更高版本。 – 2009-11-11 21:04:55