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.
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
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. –