UIWebView内存问题

时间:2010-12-13 09:26:49

标签: iphone memory-management uiwebview

我在UIWebView上播放youtube视频,它显示为modalViewController子视图(翻转过渡)。一切正常,即使UIWebView发布,我仍然会在重复选择这个modalViewController后收到内存警告。

我在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上运行我的代码。

感谢所有人的帮助。

2 个答案:

答案 0 :(得分:5)

我认为你正在以错误的方式解决内存管理问题。如果您知道自己在做什么,检查retainCount是一种有效的调试技术。但是,它不是一种内存管理工具。在您的特定情况下,如果正在显示UIWebView,它将始终具有保留计数> 1.超级视图将保留它,从而使“如果”无用。

如果webView属性定义良好(即noatomic,保留)语句:

 self.webView = nil;

应该发布webView。常见的错误是使用以下内容初始化属性:

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

如果将webView定义为“保留”,则可能会引入泄漏。正确的方法是

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

如果在没有内存不足的情况下无法多次显示控制器,则会出现内存泄漏。使用仪器(特别是泄漏)来找到正确释放的物体。 This is a good tutorial

小心保持保持和释放平衡并检查是否有泄漏。

答案 1 :(得分:0)

您的问题与此有关: Is it possible to prevent an NSURLRequest from caching data or remove cached data following a request?

向下滚动到我的答案,延长接受的答案 - 我有几天这个问题,现在已经解决了!

相关问题