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