我有一个内存管理的问题。
我正在开发一个大量使用UIWebView的应用程序。这个应用程序在从我的服务器加载内容时动态地生成大量的UIWebViews。其中一些UIWebViews非常大,有很多图片。
如果我使用仪器来检测泄漏,我不会检测到任何泄漏。但是,分配了很多对象,我怀疑这与UIWebViews有关。
当When视图因为不再需要而释放时,似乎并不是所有的内存都被释放了。我的意思是,在向我的服务器发出请求后,应用程序会创建一个UITableView和许多8Mb视图(仪器显示大约8Mb)。当用户点击返回时,所有内存都会被释放,但内存使用量只会减少大约2-3Mb,使用应用程序5-10分钟后,它就会崩溃。
我是不是遗漏了什么?有人知道会发生什么吗?
谢谢!
发布于 2011-04-15 04:12:09
尝试添加
[webView loadHTMLString: @"" baseURL: nil];
就在你发布webview之前。对于4.2.1中与在UIWebView中显示PDF相关的泄漏,这为我解决了大部分泄漏问题。
发布于 2012-07-03 18:08:41
在您的viewWillDisappear
方法中编写以下代码:
[WebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
发布于 2010-07-18 00:15:17
如果在视图控制器的同一实例中添加多个子视图,则必须先从superview中删除旧子视图,然后才能添加新的子视图。
在将UIWebView添加为子视图之前,请先向其添加标记:
webView.tag = 10;
[self.view addSubview:webView];
webView = nil;
在添加新的new视图之前(这将清除旧的视图),请从superview中删除子视图:
UIWebView * oldWebView = (UIWebView *)[self.view viewWithTag:10];
[oldWebView removeFromSuperview];
如果您不从superview中删除旧的will视图,它们将在内存中累积,直到您释放视图控制器。
https://stackoverflow.com/questions/2950907
复制相似问题