首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIWebView内存问题

UIWebView内存问题
EN

Stack Overflow用户
提问于 2010-12-13 17:26:49
回答 2查看 7.1K关注 0票数 1

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

我已经以编程方式在ViewDidLoad中添加了我的UIWebView。在viewDidDisappear中,我检查[UIWebView retainCount],如果大于1,请执行以下步骤:

代码语言:javascript
复制
[[NSURLCache sharedURLCache] removeAllCachedResponses]; 
[self.webView removeFromSuperview];
self.webView.delegate = nil;
self.webView = nil;

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

我在iOS 4.2的xCode 3.2.5上运行我的代码。

感谢你所做的一切。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-13 17:51:13

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

如果webView属性定义良好(即无原子,保留),则语句:

代码语言:javascript
复制
 self.webView = nil;

应该释放webView。一个常见的错误是使用以下命令初始化属性:

代码语言:javascript
复制
self.webView = [[UIWebView alloc] init];

如果webView被定义为"retain“,这可能会导致泄漏。正确的方法是

代码语言:javascript
复制
self.webView = [[[UIWebView alloc] init] autorelease];

如果你不能多次显示你的控制器而不耗尽内存,那就是内存泄漏了。使用Instruments (特别是泄漏)来查找正确释放笔记的对象。This is a good tutorial

请注意保持您的保留和释放平衡,并检查是否有泄漏。

票数 5
EN

Stack Overflow用户

发布于 2011-01-06 05:14:13

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

向下滚动到我的答案,以获得公认答案的扩展-我已经有这个问题好几天了,现在它已经解决了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4427378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档