Невозможно полностью восстановить использование памяти из UIWebView
У меня есть следующий пример кода (с использованием 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;
}
}
Когда приложение изначально загружается с пустымUIView
, потребляет примерно1.29 MB
(живое чтение байтов из Instruments.app). Постукивая по заготовкеUIView
вызываетtoggleWebViewLoading:
функция для стрельбы, которая в свою очередь создает новыйUIWebView
, загружает Google и добавляет его в качестве подпредставления. Как только эта последовательность операций завершена, использование памяти составляет примерно3.61 MB
, Повторное нажатие выполняет вторую частьtoggleWebViewLoading:
который удаляетUIWebView
от его суперпредставления и устанавливает егоnil
, В этот момент потребление памяти снизилось до.3.38 MB
У меня вопрос, как я могу полностью восстановить память из UIWebView (т. Е. Вернуть потребление памяти к своему начальному значению1.29 MB
или что-то подобное послеUIWebView
был удален и установлен вnil
)?
Прежде чем кто-то спросит, почему я так беспокоюсь о~2 MB
экономия памяти, у меня гораздо сложнее ситуация с использованием Xamarin / MonoTouch, где 10+ 'UIWebView
s потребляют200 MB+
памяти, и я могуКажется, что когда-либо восстанавливать всю память, когда она больше не нужна. Я думаю, что ответ сводится к этому простому вопросу.