Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIWebview内存问题_Iphone_Objective C_Iphone Sdk 3.0_Uiwebview_Ipad - Fatal编程技术网

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];
}