【发布时间】:2012-03-18 20:14:44
【问题描述】:
我正在尝试开发一个非常简单的浏览器来作为 iPad 应用程序的一部分。该浏览器将有标签。所有选项卡都基于一个带有UIWebView 填充几乎所有.xib 框架的.xib。
我将它们全部存储在NSMutableArray 中,称为tabsArray。
所以,下面是我向数组添加新选项卡的方法: 声明:
.h
@property (nonatomic,strong) NSMutableArray *tabsArray;
@property (nonatomic,strong) UIDetailWebController *pagina;
.m
self.pagina = [[UIDetailWebController alloc] initWithNibName:@"UIDetailWebController" bundle:nil];
[tabsArray insertObject:pagina atIndex:currentViewTag+1];
我如何在屏幕上显示它:
[self.view addSubview:[[tabsArray objectAtIndex:currentViewTag+1] view]];
最后,当用户关闭选项卡(具有特定索引)时,我尝试“释放” UIWebView:
[[[tabsArray objectAtIndex:index] view] removeFromSuperview];
[[tabsArray objectAtIndex:index] setWebView:nil];
[[tabsArray objectAtIndex:index] setView:nil];
[tabsArray removeObjectAtIndex:index];
我的问题是:似乎这样做我根本不释放它。内存消耗保持不变,如果我正在播放 youtube 视频,音频会继续播放。 我对编程有点陌生,并通过 iOS 5 开始使用 ARC 进行 iOS 开发,所以我可能会放一些与内存管理相关的基本细节。
解决方案:
好的,我发现保留 webview 的是 PullToRefreshView (https://github.com/chpwn/PullToRefreshView) 的实现。当我将它的委托设置为零时;一切正常!
【问题讨论】:
-
原始代码已经是self.pagina,我只是在格式化问题时输入错误。对不起。
-
您确定
[tabsArray objectAtIndex:index]中的index具有正确的值吗?您还确定实际调用了删除视图的代码吗?
标签: iphone objective-c ios xcode ios5