Проблемы с памятью UIWebView - PullRequest
       17

Проблемы с памятью UIWebView

1 голос
/ 13 декабря 2010

Я играю видео YouTube на UIWebView, который отображается как подпредставление modalViewController (флип переход) Все работает нормально, хотя UIWebView выпущен, я все еще получаю предупреждения памяти после нескольких повторных выборов этого modalViewController.

Я добавил свой UIWebView программно в ViewDidLoad. Внутри viewDidDisappear Я проверяю на [UIWebView retainCount] и, если больше 1, выполняю следующие шаги:

[[NSURLCache sharedURLCache] removeAllCachedResponses]; 
[self.webView removeFromSuperview];
self.webView.delegate = nil;
self.webView = nil;

NSLog(@"[self.webView retainCount] %d", [self.webView retainCount]);

Я запускаю свой код на xCode 3.2.5, iOS 4.2.

Ценю всю вашу помощь.

Ответы [ 2 ]

5 голосов
/ 13 декабря 2010

Я думаю, что вы неправильно подходите к проблеме управления памятью.Проверка retainCount является допустимым методом отладки, если вы знаете, что делаете.Это, однако, не инструмент управления памятью.В вашем конкретном случае, если отображается UIWebView, он всегда будет иметь счетчик сохранения> 1. У суперпредставления будет сохраняться счет, что делает бесполезным «если».

Если свойство webView правильно определено (то есть, noatomic, retain), оператор:

 self.webView = nil;

должен освободить webView.Распространенной ошибкой является инициализация свойства с помощью:

self.webView = [[UIWebView alloc] init];

Это может привести к утечке, если webView определен как «сохранить».Правильный путь:

self.webView = [[[UIWebView alloc] init] autorelease];

Если вы не можете отобразить свой контроллер несколько раз без исчерпания памяти, у вас есть утечка памяти.Используйте инструменты (в частности, утечки), чтобы найти объекты, которые выпускаются правильно. Это хороший учебник .

Будьте осторожны, следите за тем, чтобы ваши остатки и выпуски были сбалансированы, и проверяли утечки.

0 голосов
/ 06 января 2011

Ваша проблема будет связана с этим: Можно ли запретить NSURLRequest кэшировать данные или удалить кэшированные данные после запроса?

Прокрутите вниз до моего ответа для расширения принятого ответа - у меня была эта проблема в течение нескольких дней, и теперь она решена!

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