サブビューとして aを追加し、その後それを削除する次のサンプル コード (ARC を使用) がありますUIWebView
(画面上のタップ ジェスチャによって切り替えられます)。
- (void)toggleWebViewLoading:(UITapGestureRecognizer *)sender
{
if (webView == nil)
{
webView = [[UIWebView alloc] initWithFrame:CGRectMake(0.0f, 100.0f, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height - 100.0f)];
[webView loadRequest:[[NSURLRequest alloc] initWithURL:[[NSURL alloc] initWithString:@"http://www.google.ca"]]];
[self.view addSubview:webView];
}
else
{
[webView removeFromSuperview];
webView = nil;
}
}
アプリが最初に空白で読み込まれると、およそ(Instruments.app から読み取ったライブ バイト)UIView
を消費します。1.29 MB
空白をタップするUIView
とtoggleWebViewLoading:
関数が起動し、新しい が作成され、UIWebView
Google が読み込まれ、サブビューとして追加されます。この一連の操作が完了すると、メモリ使用量は約3.61 MB
. もう一度タップすると、そのスーパービューからtoggleWebViewLoading:
が削除され、 に設定される 2 番目の部分が実行されます。この時点で、メモリ消費量は に減少しました。 UIWebView
nil
3.38 MB
私の質問は、UIWebView からメモリを完全に再利用するにはどうすればよいですか (つまり、が削除されて に設定され1.29 MB
た後、メモリ消費量が初期値または同様のものに戻る)?UIWebView
nil
その他の関連情報
なぜ私がメモリの節約をそれほど気にするのかと誰かが尋ねる前に、私は Xamarin/MonoTouch を使用して 10+ がメモリを消費~2 MB
しているより複雑な状況を抱えており、そうでない場合はすべてのメモリを回収することはできません。もはや必要。答えは、この単純な質問に集約されると思います。UIWebView
200 MB+