Можно ли освободить память UIWebView? - PullRequest
2 голосов
/ 02 февраля 2010

Я пытаюсь освободить объект UIWebView, но это не свободная память. есть ли какая-то причина?

Ответы [ 3 ]

3 голосов
/ 02 февраля 2010

Может быть, очистка кеша может помочь? См. NSURLCache класс.

1 голос
/ 02 февраля 2010

То, что вы выпустили, не означает, что оно может быть выпущено - может быть, оно используется чем-то другим?

Что это за счет после того, как вы его освободили?

[myWebView release];
NSLog(@"%i", [myWebView retainCount]);

Если это число не равно 0, кто-то другой также сохраняет его, и оно не может быть освобождено до тех пор, пока оно не освободит его (или оно настроено на автоматическое освобождение, поэтому в будущем оно исчезнет). *

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

Sam

PS Я предполагаю, что вы также сделали [myWebView removeFromSuperview]; - добавление себя в представление сохранит вас.

0 голосов
/ 07 марта 2013

Существует несколько хитростей (проверьте оригинальный пост для некоторых других), которые могут помочь очистить как можно больше памяти при выпуске UIWebView. К сожалению, они никогда не достигают полного освобождения используемой памяти. То, что обычно работает лучше для меня, - это очистить HTML-документ WebView перед его выпуском.

// Empty the HTML document. This hack free some additional memory
[webview stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML='';"];

Но я никогда не достиг полного освобождения памяти, используемой веб-компонентом: (

Кроме того, если вы хотите очистить и URL-кэш, вы можете попытаться очистить его с помощью этого вызова:

// remove all cached responses
[[NSURLCache sharedURLCache] removeAllCachedResponses];

Это очистит sharedURLCache, используемый приложением для любого URLRequest (включая те, что были сделаны внутри UIWebView).

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