web-dev-qa-db-fra.com

Meilleures pratiques iOS 5 (Libérer / Conserver?)

En tant que programmeur débutant sur iPhone, quelle est la meilleure pratique pour écrire des applications à utiliser avec iOS 5 ou une version antérieure? Plus précisément, dois-je continuer à utiliser la publication/conservation des données ou dois-je l'ignorer? Est-ce que ça importe?

109
Geekgirl

C'est à vous. Vous pouvez écrire des applications à l'aide d'ARC (comptage automatique des références) et Xcode écrira du "code de collage" pour permettre à vos applications activées pour ARC de s'exécuter sur iOS 4, aucune modification n'est requise. Cependant, certaines choses ne fonctionneront pas, et la plupart des bibliothèques que vous voudrez utiliser généreront (parfois) d'innombrables erreurs et vous ne pourrez les utiliser que lorsque les développeurs publieront une mise à jour compatible avec ARC.


Edit: J'ai récemment découvert qu'il était possible de désactiver ARC par fichier. Voir la réponse de pixelfreak . Donc, mon conseil est toujours valable, mais les bibliothèques tierces ne devraient plus être mises à jour pour fonctionner avec ARC.

Voici ce que Apple dit à propos de l'exclusion d'ARC pour des fichiers spécifiques:

Lorsque vous migrez un projet pour utiliser ARC, l'indicateur de compilation -fobjc-arc est défini comme valeur par défaut pour tous les fichiers source Objective-C. Vous pouvez désactiver ARC pour une classe spécifique à l'aide de l'indicateur de compilation -fno-objc-arc pour cette classe. Dans Xcode, dans l'onglet Phase de construction cible, ouvrez le groupe Compiler les sources pour afficher la liste des fichiers source. Double-cliquez sur le fichier pour lequel vous voulez définir l'indicateur, entrez -fno-objc-arc dans le panneau déroulant, puis cliquez sur Terminé.

enter image description here

Voir le guide de transition complet ici .

99
sudo rm -rf

Pour ceux qui sont toujours curieux de savoir comment désactiver ARC sur des fichiers individuels, voici ce que j'ai fait:

  1. Accédez aux paramètres de votre projet, sous Build Phases > Compile Sources
  2. Sélectionnez les fichiers que vous souhaitez que ARC soit désactivé et ajoutez - fno-objc-arc des indicateurs de compilation. Vous pouvez définir des indicateurs pour plusieurs fichiers en une seule fois en sélectionnant les fichiers, puis en appuyant sur la touche "Entrée".

Je ne sais pas si c'est la méthode recommandée, mais cela fonctionne pour moi.

PS: J'ai rassemblé ces informations sur clang.llvm.org ici qui est accessible au public, donc pas sous NDA.

171
pixelfreak

iOS 5 est toujours sous NDA, et le sera probablement jusqu'à ce qu'ils publient la version publique. Si vous avez un compte de développeur, rendez-vous sur le Forums des développeurs Apple et demandez-leur.

Pour les versions précédentes, vous devez compter les références, conserver et publier en conséquence. Consultez le guide de gestion de la mémoire .

Modifier: Voici une spécification publique pour le comptage automatique des références et une citation tirée de la page publique iOS 5 =:

Le comptage automatique de références (ARC) pour Objective-C fait de la gestion de la mémoire le travail du compilateur. En activant ARC avec le nouveau Apple compilateur LLVM, vous n’aurez plus jamais besoin de taper à la main ou relâcher, ce qui simplifie considérablement le processus de développement, tout en réduisant les pannes et les fuites de mémoire. Le compilateur comprend parfaitement vos objets et libère chaque objet dès qu’il n’est plus utilisé. Les applications fonctionnent donc toujours aussi vite, avec des performances prévisibles et régulières.

10
nevan king

Les détails sont clairs/sous NDA pour le moment, mais Apple a implémenté le calcul automatique des références (ARC) dans iOS 5, comme détaillé ici: http://developer.Apple.com/technologies/ios5/

Si vous développez une nouvelle application dans Xcode 4 avec le SDK iOS 5, vous pouvez ignorer en toute sécurité le comptage conservation/libération.

[modifier] Sudo rm -rf fait un bon point; les bibliothèques tierces peuvent être significativement affectées

4
Dominic

C'est certainement le choix du développeur ou de l'équipe. ARC (Compteur de référence automatique) a rendu les choses un peu plus faciles en gérant automatiquement la mémoire pour vous. Il libérera, conservera et vendra le cas échéant. Je pense que vous devriez acquérir de l'expérience dans la gestion de la mémoire vous-même, de préférence dans une application de test, si ce n'est déjà fait. Une autre chose à considérer est de savoir si votre application s'appuie sur des bibliothèques tierces qui, si elles ne sont pas converties en ARC, empêcheront la compilation de votre application. Le choix dépend évidemment de la situation.

3
Charles

Personne n'a mentionné SystemConfiguration.framework? S'il vous plaît n'oubliez pas de le mettre dans Frameworks. J'ai misérablement plusieurs heures à le réaliser.

3
ThinkChris

définir l'indicateur comme -fno-objc-arc dans les paramètres du projet> Phases de construction> Compiler les sources

0
Mubin Shaikh