1

Arcを使用して単純なXcodeページベースアプリケーションでいくつかのテストを行っています。

dataviewcontrollerにuiwebviewをロードしていて、Instrumentsでアクティビティをテストしています。ページをスクロールすると、メモリ使用量が増え続け、前のページがメモリから解放されないように見えます。

これが私がデフォルトのテンプレートに加えた変更です。12のデフォルトではなく、240ページで実行されるようにモデルを変更しました。

dataViewControllerで、プログラムでuiwebviewを追加し、リクエストをgoogleに読み込んで、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

提案を事前に感謝します。

4

1 に答える 1

0

私は解決策を見つけました

- (void)viewDidDisappear:(BOOL)animated
{
    [pageContent removeFromSuperview];
    pageContent = nil;
}
于 2013-02-07T13:59:33.430 に答える