2009-10-14 7 views

Répondre

5

Il n'y a aucun accès direct à cette information dans le SDK, et les applications ne sont pas autorisés à déranger avec le système d'exploitation comme vous le suggérez. Vous êtes dans votre propre petite boîte; Apple s'attend à ce que vous restiez là. Lorsque vous posez des questions qui incluent «le système», vous êtes probablement en dehors de votre boîte.

Cela dit, il y a quelques astuces que vous pouvez utiliser. Vous pouvez allouer des blocs de mémoire de plus en plus grands jusqu'à ce que vous receviez -didReceiveMemoryWarning. À ce stade, libérez votre mémoire allouée. Cela vous donnera une idée approximative de combien de mémoire le système d'exploitation permettra d'avoir. Ce n'est pas la même chose que l'OS a bien sûr. Si vous faites un tri -didReceiveMemoryWarning, le système d'exploitation fera également l'objet d'une gestion interne. C'est donc la manière programmatique la plus efficace de libérer de la mémoire.

La manière non-programmatique la plus efficace pour libérer de la mémoire est de demander à l'utilisateur de redémarrer. Pour les applications nécessitant une mémoire importante (généralement des jeux), cette approche n'est pas inconnue. SBSettings nécessite un jailbreaking et est en dehors du SDK.

+0

Merci pour votre réponse. Je voudrais demander un peu plus loin, à quel niveau, l'iPhone verra la mémoire est faible? disons 10% de mémoire restante? – Raptor

+2

Il n'est pas documenté et est difficile à déterminer car la propre utilisation de la mémoire de l'OS est toujours fluctuante. Il est tout à fait possible pour vous de recevoir un avertissement de mémoire, ne rien faire, et tout va bien parce que le système d'exploitation libère de la mémoire par lui-même. En raison de la fragmentation de la mémoire, il est également possible d'allouer plus de mémoire à l'aide de petits blocs que de grands, de sorte que les problèmes peuvent être compliqués. –

0

Vous pouvez libérer de la mémoire en appelant "release" sur les objets que vous avez alloués après que vous en ayez fini avec eux. Voir http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html

+0

Yat-il un moyen de libérer la mémoire de l'ensemble du système de l'iPhone, au lieu d'une classe elle-même? Je remarque qu'une application appelée SBSettings peut faire le travail, mais je ne sais pas comment ils y parviennent. – Raptor

2

Il est possible de déterminer la quantité de mémoire disponible sur un iPhone en utilisant la mach api. Voir cette question connexe: Available memory for iPhone OS app

Questions connexes