基于页面的应用程序与uiwebviews内存泄漏

时间:2013-02-01 12:50:00

标签: objective-c memory-leaks uiwebview automatic-ref-counting uipageviewcontroller

我正在使用Arc进行一些简单的Xcode页面基础应用程序测试。

我正在使用dataviewcontroller加载uiwebview并且我一直在使用Instruments测试活动,当我滚动页面时内存使用量不断上升,看起来前面的页面永远不会从内存中释放。

以下是我对默认模板所做的更改。 我修改了模型以运行240页而不是12个默认值。

在dataViewController中,我以编程方式添加uiwebview并将请求加载到谷歌并将webview添加到控制器视图。

内存使用量从大约20Mb开始,最终达到70Mb以上然后崩溃。

有人知道我哪里出错吗? 如何释放视图以释放内存?

修改下面的代码:

DataViewController.h

#import <UIKit/UIKit.h>
@interface RXBDataViewController : UIViewController<UIWebViewDelegate>
{
    UIWebView *pageContent;
}

@property (strong, nonatomic) IBOutlet UILabel *dataLabel;
@property (strong, nonatomic) id dataObject;

@end

DataviewController.m

#import "RXBDataViewController.h"
@interface RXBDataViewController ()
@end

@implementation RXBDataViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
    pageContent = [[UIWebView alloc] initWithFrame:CGRectMake(8, 30, 260, 350)];
    pageContent.userInteractionEnabled = NO;
    [pageContent setDelegate:self];

    [pageContent loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com/"]]];
    [self.view addSubview:pageContent];    
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.dataLabel.text = [self.dataObject description];
}
@end

提前感谢您的建议。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案

- (void)viewDidDisappear:(BOOL)animated
{
    [pageContent removeFromSuperview];
    pageContent = nil;
}