Résumé: Pouvez-vous ajouter à ma liste de choses à surveiller lors de la migration vers iOS 5? StackOverflow a été d'une valeur inestimable que j'ai travaillé sur la mise à niveau vers iOS 5. J'ai découvert quelques jolies choses de base que j'avais raté avant Xcode 4.2, et je me demandais ce que les autres "pièges" qui pourrait se cacher.
Détails: Avec iOS 5 d'expédition cette semaine, j'ai dû faire quelques modifications pour un couple de mes applications. Xcode 4.2 est un bien meilleur travail de l'analyse de code de gestion de mémoire à cause de la nouvelle de l'ARC de fonctionnalité. La mise à jour iOS 5 est un excellent point de passer en revue toutes vos code de gestion de mémoire. Le nouveau compilateur trouve également un certain nombre d'autres problèmes plus tôt compilateurs manqué. Bravo à la Pomme compilateur ingénieurs. Voici les principaux éléments qui ont contribué (et beaucoup d'entre eux seront aussi valables pour les versions antérieures d'iOS).
- Assurez-vous d' appeler [super dealloc] à la FIN de votre dealloc méthodes, pas au début.
- Dans viewDidUnload, certaines personnes ont rapporté des bugs qui nécessitent [super viewDidUnload] à être appelé à la fin, pas au début, de votre viewDidUnload.
- Comprendre conserver compte, synthétisé setters, et quand faire appel à la libération ou de la autorelease. Le nouveau compilateur fera remarquer plus de problèmes que les anciens compilateurs n'. (Je pensais que j'avais été prudent, mais apparemment, je n'étais pas assez prudent.) Apple guide de gestion de la mémoire est une lecture obligatoire-pas de raccourcis.
- C'est une bonne idée de tourner sur des zombies lors du débogage (dans Xcode, choisir Produit | Modifier le Régime... et sélectionnez le Débogage de programme; sur l'onglet Diagnostics, cochez la case Activer Zombie Objets). Cela peut vous aider à trouver la tentative utilise des zombies (les objets que vous ne devriez pas utiliser plus).
- Les Fuites instrument est également utile. Exécuter votre application en mode de Profil et de choisir les Fuites de modèle. Dans les Instruments de la fenêtre, sélectionnez les Fuites d'instrument et de cocher la case qui dit "Rassembler une Fuite du Contenu de la Mémoire" et il va vous aider à voir où la perte de mémoire d'origine dans votre code.
Il y a quelques bricoles que j'ai rencontré:
- Apple pattern singleton besoins "oneway", a ajouté le type de retour de la déclaration:
- (oneway void) communiqué { }
- Vous devrez peut-être ajouter manuellement "armv6" comme un type d'architecture dans vos Paramètres de construction (et assurez-vous Construire Active Seulement l'Architecture est définie sur NON).
Toutes les autres suggestions de pièges potentiels que je devrais regarder pour? J'ai le sentiment que mes applications sont plus stable maintenant, mais je me sentais vraiment bien sur avant de.