Iphone UIWebview内存问题
在我的应用程序中,我有一个很大的内存问题Iphone UIWebview内存问题,iphone,objective-c,iphone-sdk-3.0,uiwebview,ipad,Iphone,Objective C,Iphone Sdk 3.0,Uiwebview,Ipad,在我的应用程序中,我有一个很大的内存问题 我在需要时动态添加UIScrollview和viewController视图 我在滚动时正确地移除了viewController。 在那个viewController中,我在IBMOutlet中放置了一个UIWebView并加载webview 作为 并在ViewController中释放UIWebview - (void)dealloc { m_objWebView.delegate=nil; [m_objWebView stopLoading];
我在需要时动态添加UIScrollview和viewController视图
我在滚动时正确地移除了viewController。
在那个viewController中,我在IBMOutlet中放置了一个UIWebView并加载webview 作为 并在ViewController中释放UIWebview
- (void)dealloc {
m_objWebView.delegate=nil;
[m_objWebView stopLoading];
[m_objWebView release];
m_objWebView=nil;
[[self.view subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)];
[super dealloc];
}
但5/6分钟后,我的应用程序在内存警告后崩溃
现在,我修改了直接将uiwebview添加到uiscrollview并延迟加载三个WebView的代码。现在内存泄漏减少了,但仍然存在。但现在我遇到了另一个问题,当用户快速滑动时,加载web内容会出现延迟。有什么办法可以解决这个问题吗
提前感谢您的帮助无需在dealloc中从UIViewController的视图中删除子视图。当所有者(UIViewController)被释放时,view属性及其所有子视图将被自动释放。您只需释放保留的所有属性。假设您已将m_objWebView声明为 @属性(非原子,保留)ibuiwebview*m_objWebView,那么您只需要:
- (void)dealloc {
m_objWebView.delegate=nil;
[m_objWebView stopLoading];
[m_objWebView release], m_objWebView=nil;
[super dealloc];
}
因此,我建议您研究何时何地保留/释放viewController,在这方面您可能仍然能够进行优化。至于加载web内容的延迟——好吧,这就是延迟加载的缺点:延迟将内存消耗保持在最低限度,但正如术语所暗示的,它并不快。您是如何创建web视图的?你为什么不发布
视图
?谢谢Elise van。有没有办法预加载UIwebview?由于folderAs文件中的loacl内容是我写的答案,我想知道同样的事情。我想如果您事先知道url,那么可以使用NSKeyedArchiver/NSKeyUnarchiver缓存视图。但是你必须弄清楚什么时候以及如何检查新内容。另一方面,也许WebView工具包有处理这个问题的方法——我对UIWebView、NSURL及其兄弟的了解还不够,无法就此向您提供建议。祝你好运
- (void)dealloc {
m_objWebView.delegate=nil;
[m_objWebView stopLoading];
[m_objWebView release], m_objWebView=nil;
[super dealloc];
}