Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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_Memory Management_Uiwebview - Fatal编程技术网

Iphone UIWebView内存问题

Iphone UIWebView内存问题,iphone,memory-management,uiwebview,Iphone,Memory Management,Uiwebview,我正在UIWebView上播放youtube视频,它显示为modalViewController子视图(翻转转换)。一切正常,即使UIWebView被发布,在多次选择这个modalViewController之后,我仍然收到内存警告 我已经在ViewDidLoad中以编程方式添加了UIWebView。在ViewDidEnglish中,我检查[UIWebView重新计数]如果大于1,请执行以下步骤: [[NSURLCache sharedURLCache] removeAllCachedRespo

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

我已经在ViewDidLoad中以编程方式添加了UIWebView。在
ViewDidEnglish
中,我检查
[UIWebView重新计数]
如果大于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上运行我的代码


感谢您的帮助。

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

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

 self.webView = nil;
应该发布webView。一个常见错误是使用以下命令初始化属性:

self.webView = [[UIWebView alloc] init];
如果webView被定义为“保留”,则很可能会导致泄漏。正确的方法是

self.webView = [[[UIWebView alloc] init] autorelease];
如果无法在内存不足的情况下多次显示控制器,则会出现内存泄漏。使用仪器(特别是泄漏)查找被正确释放的物体


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

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

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

 self.webView = nil;
应该发布webView。一个常见错误是使用以下命令初始化属性:

self.webView = [[UIWebView alloc] init];
如果webView被定义为“保留”,则很可能会导致泄漏。正确的方法是

self.webView = [[[UIWebView alloc] init] autorelease];
如果无法在内存不足的情况下多次显示控制器,则会出现内存泄漏。使用仪器(特别是泄漏)查找被正确释放的物体


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

您的问题将与此相关:


向下滚动到我的答案,以扩展已接受的答案-我有这个问题好几天了,现在已经解决了

您的问题将与此相关:


向下滚动到我的答案,以扩展已接受的答案-我有这个问题好几天了,现在已经解决了

谢谢你的回复。实际上,我确实初始化了webview,如下所示:self.webview=[[[UIWebView alloc]initWithFrame:CGRectZero]autorelease];通过仪器,我无法检测到任何泄漏。但是控件到达了didReceiveMemoryWarning方法,并出现1级警告,应用程序崩溃。@TechFanior你找到解决方案了吗?如果你发布解决方案,它将非常有用!!!同样的警告在mycase am中重复并崩溃,使用四个Web视图加载图像感谢您的响应。实际上,我确实初始化了webview,如下所示:self.webview=[[[UIWebView alloc]initWithFrame:CGRectZero]autorelease];通过仪器,我无法检测到任何泄漏。但是控件到达了didReceiveMemoryWarning方法,并出现1级警告,应用程序崩溃。@TechFanior你找到解决方案了吗?如果你发布解决方案,它将非常有用!!!同样的警告在mycase am中重复并崩溃,使用四个Web视图加载图像