Si je décide de passer à iOS 5, dois-je dois-je supprimer toutes les déclarations [myObject retain] et [myObject release] ? et [myObject release] de mon code ? mon code ?
Oui, mais XCode 4.2 inclut un nouvel outil "Migrate to Objective-C ARC" (dans le menu Edit->Refactor), qui le fait pour vous. Appeler dealloc est une autre histoire. Comme mentionné dans les commentaires, la référence clang indique que vous devez conserver la méthode dealloc :
Justification : même si ARC détruit automatiquement les variables d'instance, il existe toujours des raisons légitimes d'écrire une méthode dealloc, comme la libération de ressources non récupérables. Le fait de ne pas appeler [super dealloc] dans une telle méthode est presque toujours un bogue.
Vous activez ARC à l'aide d'un nouvel indicateur de compilation -fobjc-arc du compilateur. ARC est pris en charge dans Xcode 4.2 pour Mac OS X v10.6 et v10.7 (applications 64 bits) (applications 64 bits) et pour iOS 4 et iOS 5. iOS 4 et iOS 5. (Les références faibles ne sont pas prises en charge dans Mac OS X v10.6 et iOS 4). 4). Il n'y a pas de support ARC dans Xcode 4.1.
-
Si je développe une nouvelle application pour iOS 5 à l'aide de la technologie ARC, devrai-je implémenter une une sorte de contrôle de "rétro-compatibilité" ? En d'autres termes, devrai-je vérifier la version d'iOS et appeler retain et release en conséquence ? Donc, en gros, est-ce que l'ARC est-il disponible pour toutes les versions d'iOS ou seulement pour iOS 5 ?
Non, car l'ARC fait sa magie au moment de la compilation et non au moment de l'exécution.
Au lieu de devoir vous rappeler quand il faut utiliser retain, release et autorelease, ARC évalue les exigences de durée de vie de vos objets et insère automatiquement l'option automatiquement les appels de méthode appropriés compilation. Le compilateur génère également génère également des méthodes dealloc appropriées pour vous.
Informations complémentaires sur l'ARC : http://clang.llvm.org/docs/AutomaticReferenceCounting.html