iOS 6 dépréciation de viewWillUnload & amp; passer à didReceiveMemoryWarning
Je suis nouveau développeur sur le point de lancer ma première application. Je suis confus au sujet de l'abandon du viewDidUnload
comme décrit ci-dessous dans Apple iOS 6 notes de version:
Dans iOS 6, le viewWillUnload et viewDidUnload méthodes de
UIViewController sont désormais obsolète. Si vous étiez à l'aide de ces méthodes
pour libérer des données, utilisez la didReceiveMemoryWarning méthode à la place. Vous
pouvez également utiliser cette méthode pour libérer les références à la vue
du contrôleur de la vue, si elle n'est pas utilisée. Vous auriez besoin de test
la vue n'est pas dans une fenêtre avant de le faire.
Pourquoi est-ce arrivé? Quels sont les directives à suivre pour vous assurer que ce changement ne cause pas de problèmes de performances dans mon application?
Grâce.
source d'informationauteur Orpheus Mercury
Vous devez vous connecter pour publier un commentaire.
Selon Apple, ils ont amélioré la mémoire interne de gestion pour les points de vue assez que les gains obtenus par la destruction des trucs dans
viewWill/DidUnload
sont minimes. En outre, ils ont des données suggérant que de nombreuses applications de crash parce que les applications ne gèrent pas correctement les notifications, et faire "les autres" trucs pas associés à la vue de déchargement.Enfin, un avertissement de mémoire est maintenant confirmé que le premier et le seul avertissement que vous obtiendrez avant que votre application est résilié en raison de la faible mémoire, donc c'est vraiment de la place pour traiter les problèmes de mémoire.
Donc, en gros, il suffit de retirer votre
viewWillUnload
etviewDidUnload
méthodes. Gérer des problèmes de mémoire dansdidReceiveMemoryWarning
et de tout autre point de vue, contrôleur de gestion dans les endroits appropriés.MODIFIER
Cela dépend. Je sais que c'est pas ce que vous voulez entendre, mais c'est la vérité 🙂
En général, vous devriez éviter de l'asymétrie. Ainsi, vous devez annuler une opération à l'aide de la méthode symétrique à partir de laquelle vous avez "fait" de l'original. En général, vous devriez être en mesure de faire tous les
viewDidUnload
type de travail dansdidReceiveMemoryWarning
etdealloc
.Cela devrait vraiment pas cause d'un changement, parce que vous avez eu de reproduire la plupart des, de ce code, dans ces deux endroits de toute façon.
Je ne sais pas ce que tu veux dire par "d'aller plus loin vers le bas sur la manette de navigation de la pile" de sorte que vous aurez besoin de préciser que exemple pour moi de donner une réponse utile.
L'un des problèmes avec l'aide de
viewDidDisappear
etviewDidAppear
était qu'il était difficile de savoir quand le point de vue de sa comparution, car il a été fait apparaître, ou parce que d'un point de vue qui est sur le dessus de la il était en train de disparaître... l'amenant à apparaître.Ces éléments de l'API sont censés pour vous aider à répondre à ces questions:
Dans iOS 6, points de vue ne sont jamais déchargé.
Cela signifie que
loadView
etviewDidLoad
ne sont jamais appelé une fois, etviewDidUnload
n'est jamais appelée. Donc, si votre vue-contrôleur utiliseviewDidUnload
pour gérer les conditions de mémoire faible, alors il faudra changer.Si vous souhaitez répondre à une insuffisance de mémoire, de mettre en œuvre
didReceiveMemoryWarning
et la libération temporaire des données et des objets dans cette méthode.Dans iOS 6, nous devrions la libération vues par nous-mêmes, de faire quelque chose comme ceci