2010-12-13 70 views
1

我在UIWebView上播放youtube視頻,該視頻顯示爲modalViewController子視圖(翻轉過渡)。一切工作正常,即使UIWebView被釋放,我仍然收到內存警告後,幾次重複選擇這個modalViewController。UIWebView內存問題

我已經在ViewDidLoad中以編程方式添加了我的UIWebView。裏面viewDidDisappear我檢查[UIWebView retainCount],如果大於1,請執行以下步驟:

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 
[self.webView removeFromSuperview]; 
self.webView.delegate = nil; 
self.webView = nil; 

NSLog(@"[self.webView retainCount] %d", [self.webView retainCount]); 

我上的Xcode 3.2.5,iOS 4.2的運行我的代碼。

感謝您的幫助。

回答

5

我認爲你正在以錯誤的方式接近內存管理問題。如果你知道你在做什麼,檢查retainCount是一種有效的調試技巧。但它不是一個內存管理工具。在你的特定情況下,如果顯示的是UIWebView,它總會有保留計數> 1.超級視圖將會有一個保留,從而使「if」無用。

如果webView的屬性明確定義(即noatomic,保留)聲明:

self.webView = nil; 

應該釋放web視圖。一個常見的錯誤是初始化屬性:

self.webView = [[UIWebView alloc] init]; 

這很可能會推出,如果web視圖被定義爲「保留」泄漏。正確的方法是

self.webView = [[[UIWebView alloc] init] autorelease]; 

如果您不能顯示您的控制器多次,而不會用完內存您有內存泄漏。使用儀器(特別是泄漏)來查找正確釋放註釋的物體。 This is a good tutorial

小心保持保持和釋放均衡並檢查是否有泄漏。

+0

感謝您的回覆。其實,我做了如下初始化webview:self.webView = [[[UIWebView alloc] initWithFrame:CGRectZero] autorelease];通過儀器,我無法檢測到任何視圖解僱泄漏。但是,該控件通過級別1警告達到了didReceiveMemoryWarning方法,並且應用程序崩潰。 – random 2010-12-13 10:00:58

+0

@techenthusiast您是否找到了解決方案?如果您發佈解決方案,它將非常有用!同樣的警告重複,並在使用四個WebView加載圖像的情況下崩潰 – 2013-05-01 12:27:09