[英]Memory leak when using UIwebview
我正處於我的第一個iPhone SDK項目的最后階段。 我一直在努力消除應用程序中的內存泄漏,並且大多數情況下都成功了。 但是我在其中之一中掙扎。 我有一個帶按鈕的聯系人屏幕,該按鈕可獲取Web視圖,但僅當存在網絡連接時才可以。 如果不是,則會彈出警報。 這在實踐中效果很好,但會泄漏。
所有泄漏均指向代碼中的同一位置。 這是第一個代碼示例(指令指向這些行的第一行):
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) ?
你們中的任何人都可以看到此代碼中泄漏的內容嗎? 我已經從其他地方復制了此部分,並設法對其進行了一些改動。 但是我必須承認我不理解該功能中的所有代碼...
您是否清理過項目,然后運行“構建和分析”? 只要您一直在使用Objective C樣式函數,大多數時候它都會告訴您大多數內存問題。 如果您與C樣式函數混合搭配,將不會有太多幫助。
我猜想那行里面的NSURLRequest是不會被釋放的。 可能會有助於提高可讀性和可維護性,以使該組合更容易些。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.