2009-01-19 5 views

Répondre

7

Si votre application reçoit un avertissement de mémoire (par exemple, dans la méthode didReceiveMemoryWarning de votre contrôleur de vue), vous devez libérer toutes les données non critiques. Tout ce que vous utilisez qui est mis en cache, par exemple, ou qui peut être régénéré, doit être sauvegardé. Par exemple, si votre application croque certains nombres et stocke le résultat dans un grand tableau, si vous n'utilisez pas activement ce tableau, vous devez le libérer. Ensuite, régénérez-le quand vous en avez besoin à nouveau.

Un peu plus d'informations est ici: Observing Low-Memory Warnings

+0

Lien déplacé ... https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ApplicationEnvironment/chapter_3_section_5.html – estobbart

4

J'ai entendu dire que des avertissements sont émis lorsque votre application atteint environ 22 Mo. (Toute mémoire allouée est incluse - l'iPhone garde tout dans la RAM physique et ne sort pas de page vers un autre stockage.) Étant donné que le téléphone ne dispose que de 128 Mo de RAM totale, cela semble plausible.

Cette limite n'inclut pas la mémoire utilisée par les bibliothèques système partagées, telles que l'environnement d'exécution Objective-C. Et même si je ne suis pas tout à fait sûr, je ne pense pas que l'utilisation de la mémoire de WebKit soit incluse pour le composant UIWebView, car je pense que WebKit est toujours chargé (mais encore une fois, pas sûr à 100%). Lorsque vous atteignez cette limite, la meilleure chose à faire est de libérer tout ce que vous pouvez facilement régénérer ou relire à partir des fichiers d'entrée, tels que les vues, les images et les données mises en cache.

+0

Ouais qui semble à peu près juste après mon expérience. Aucun indice sur Safari en utilisant sa propre mémoire cependant. – schwa

Questions connexes