ARC conseillé par Apple
Karoxys
Membre
Bonjour,
J'ai participé à une réunion cocoheads hier soir. Et j'ai entendu dire qu'Apple allé conseiller les développeurs d'utiliser ARC et de ne plus gérer le garbage collector.
J'ai voulu ouvrir un débat sur ce sujet qui est important de mon point de vue.
Après une mini étude, j'ai vu qu'il y avait des solutions afin de gérer la migration vers ARC, qu'en pensez-vous de ces outils ?
Merci pour vos réponses.
J'ai participé à une réunion cocoheads hier soir. Et j'ai entendu dire qu'Apple allé conseiller les développeurs d'utiliser ARC et de ne plus gérer le garbage collector.
J'ai voulu ouvrir un débat sur ce sujet qui est important de mon point de vue.
Après une mini étude, j'ai vu qu'il y avait des solutions afin de gérer la migration vers ARC, qu'en pensez-vous de ces outils ?
Merci pour vos réponses.
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Car sous iOS le garbage collector n'existe pas.
Ensuite il me semble qu'il est abandonné à partir de ML.
Enfin, Apple recommande d'utiliser ARC depuis le début.
Je pense qu'on viendra tous à y migrer quand les différentes apps que l'on fait ne devront pas être compatible avec un OS inférieur à la quatrième version (sous iOS j'entends).
Quand Apple a sorti le GC sous Leopard, ils ont passé Xcode dessus pour faire style "ça marche regardez, allez-y". Aujourd'hui ils abandonne le support par ce que le principe du GC, c'est de la merde.
Maintenant on nous propose ARC, fonctionnement déterministique de la gestion mémoire basé sur des règles de nomage de fonction et de l'analyse statique de code. Comme on l'a déjà dit mainte fois, ARC écris du code pour vous mais ne pense pas pour vous, il faut quand même savoir comment fonctionne la mémoire et comment pense ARC pour s'en servir sans plus de casse qu'autre chose.
De fait je préfère gérer ma mémoire à la main, le principe du retain / release c'est tout sauf compliqué et l'avoir sous les yeux permet d'être certain de ce qu'il se passe.
- le code est plus lisible, puisqu'il n'est pas encombré de retain/release/autorelease
- Il n'est plus nécessaire d'établir la liste des propriétés et variables d'instance pour les libérer dans -dealloc.
- le code est plus simple. Par le passé, il était parfois nécessaire d'implémenter une méthode déléguée juste pour libérer la mémoire.
- il y a moins de bugs liés à des erreurs stupides
Pour ce qui est des inconvénients:
- Ne dispense pas de connaà®tre les mécanismes de gestion de la mémoire (je te rejoins Yoann)
- Dispo seulement à partir de iOS 5 / Mac OS 10.7 (oui, je sais que ça fonctionne partiellement sous iOS 4.3).
- Oblige à programmer à la façon d'Apple. (Je ne suis pas certain qu'il s';agisse d'un inconvénient).
Dans l'ensemble, je trouve qu'on gère déjà bien trop de détails dans les programmes Objective-C, alors un système de gestion de la mémoire évolué, même un ramasse-miettes n'est pas un luxe. Ce que je préfère dans ARC est que le programmeur conserve tout de même le contrôle.
Moi je ne l'utilise encore que très peu, mais je m'y met de plus en plus et c'est vraiment sympa.
En ce qui concerne les properties weak, ça sera vraiment excellent, mais c'est compatible qu'à partir de iOS 5.0, donc tant qu'on doit gérer iOS 4.0 dans nos applis c'est inutilisable. Par contre dès qu'on passera à iOS 5 et +, je pense que ARC apportera vraiment beaucoup.
Oui, et non....
Les respect des règles de nomage n'est de toute façon pas une nouveauté puisque c'était déjà le cas avant ARC...
ARC n'utilise absolument pas l'analyse statique de code, mais un algorithme bien plus déterministe. Les séances de la WWDC de l'année dernière à propos d'ARC (la session 322, voir vidéo à partir de 29:40 notamment) insistent bien sur ces points, démonstrations à l'appui de ce que fait le compilateur.
Elle aborde en détail ce que fait le compilateur (en gros rajouter des retain/release entre chaque ligne de code, puis passer un optimiseur qui va virer ceux qui ne sont pas nécessaires... Je caricature mais l'algo se rapproche de ça).
La 323 n'est qu'une introduction à l'utilisation d'ARC qui n'entre pas du tout dans les détails d'implémentation.
Je vous remercie également pour toutes ces précisions sur le sujet /wink.png' class='bbc_emoticon' alt=';)' />