Claire UIWebView contenu sur le licenciement de vue modal (iPhone OS 3.0)
J'ai actuellement une UIWebView qui est affiché dans une vue modal. Fondamentalement, c'est une vue de détail qui offre un affichage d'une page lorsque l'utilisateur clique sur un lien. Lorsque la vue est rejeté et de les mettre à nouveau (quand l'utilisateur clique sur un autre lien), précédemment chargé de contenu est toujours visible et le nouveau chargement du contenu "en haut" de la dernière de contenu. Cela a un sens parce que l'instance de la UIWebView persiste entre les sessions et est sorti uniquement lorsque la mémoire est nécessaire.
Cependant, je tiens à complètement effacer la UIWebView lorsque le modal point de vue est rejeté de telle sorte que 1) le contenu est effacé et 2) de la mémoire est libérée. Jusqu'à présent mes recherches et tentatives n'ont pas trouvé de réponse. Ces liens n'ont pas fonctionné pour moi:
- est-il possible de libérer de la mémoire de UIWebView?
- Réutilisé UIWebView montrant la précédente chargée de contenu pour une brève seconde sur iPhone
J'ai essayé [[NSURLCache sharedURLCache] removeAllCachedResponses];
et le réglage de la webView à zéro manuellement et en relâchant la webView sur le modal-vue-de rejeter en vain. Toutes les pensées de l'rendu sage masses?
Vous devez vous connecter pour publier un commentaire.
Libérant de la vue web est probablement la meilleure approche. Si une vue est un point de vue de la hiérarchie (a une superview), vous devez appeler removeFromSuperview pour obtenir le superview pour libérer la vue.
Vous pouvez également charger une chaîne html pour un document vide:
Parfois
loadHTMLString
est trop lent. Vous pouvez également utiliser:Je ne suis pas sûr si cela permettra de libérer de la mémoire si...
Il semble que, dans certaines circonstances, les méthodes proposées par drawnonward et rob ne peut pas fonctionner (peut-être quelque chose à faire avec CSS sur la page qui est en cours d'effacement), mais cela n'a de travail :
l'évaluation de javascript est généralement plus rapide que le chargement d'une nouvelle demande.
Dans mon cas, j'avais besoin d'effacer la vue de son contenu instantanément et être en mesure de commencer à charger quelque chose d'autre tout de suite. Ni du chargement d'un document vide HTML string ni de compensation de la page avec du JavaScript abouti à l'effet désiré. Au lieu de cela, j'ai utilisé:
Et ce effacé la vue à l'arrière-plan par défaut et initié à côté de la page de chargement comme prévu.
J'espère que cela aide quelqu'un d'autre aussi.
je préfère le suivant: