UIWebView вращение и проблема с памятью - PullRequest
0 голосов
/ 02 июня 2010

У меня есть UIWebView, который загружает встроенный XHTML следующим образом:

body = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
body.scalesPageToFit = YES;
body.backgroundColor = [UIColor scrollViewTexturedBackgroundColor];
body.autoresizingMask =  UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;

[self.view addSubview:body];
[body loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"article16" ofType:@"xhtml"]isDirectory:NO]]];

В этом XHTML много изображений, и когда я поворачиваю устройство, у меня появляются предупреждения о памяти, и иногда приложение вылетает. Если я удаляю маску авторазмера, в частности UIViewAutoresizingF FlexibleWidth (я пробовал использовать только UIViewAutoresizingF FlexibleLeftMargin и UIViewAutoresizingF FlexibleRightMargin без проблем), предупреждение о памяти останавливается, и приложение больше не падает.

Если я удаляю все маски авторазмера и устанавливаю новый кадр webView в didRotate или willRotate, я получаю те же предупреждения, что и при использовании UIViewAutoresizingF FlexibleWidth.

Есть приложение под названием Atomic Web, которое может открывать тот же XHTML и вращаться без предупреждений о памяти, и Safari также может открывать его, но если я создаю проект только с этим UIWebView, приложение иногда падает.

Кто-то знает, что это может быть? Могу ли я установить рамку веб-просмотра другим способом? Почему я не могу использовать маску авторазмера?

Спасибо за ваше внимание.

Ответы [ 2 ]

3 голосов
/ 25 октября 2010

Я также видел проблемы с памятью, но в несколько ином качестве с UIScrollView. Похоже, что свойство [UIColor scrollViewTexturedBackgroundColor] занимает очень значительное количество памяти, когда ваш подкласс UIScrollView, включая UIWebView, применяет его в качестве цвета фона.

Я бы порекомендовал изменить его на обычный цвет, например, серый. Я заметил сокращение объема памяти на 7 МБ, о чем сообщает инструмент мониторинга активности, просто сделав это простое изменение.

0 голосов
/ 08 декабря 2010

Попробуйте:

- (void)webViewDidFinishLoad:(UIWebView *)webView {
  [[NSUserDefaults standardUserDefaults] setInteger:0 forKey:@"WebKitCacheModelPreferenceKey"];
}

С http://blog.techno -barje.fr / post / 2010/10/04 / UIWebView-secrets-part1-leaks-on-xmlhttprequest

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...