29 votes

@autoreleasepool sans ARC?

Je suis nouveau sur Xcode 4.2 et je ne suis pas encore complètement à jour sur ARC. Cependant, j'ai lu que @autoreleasepool remplace l'utilisation manuelle des pools autorelease et fait de la magie spéciale sous le capot pour bien jouer avec ARC.

Pourtant, lorsque je démarre un nouveau projet dans Xcode 4.2 spécifiquement avec l'option ARC désactivée, j'obtiens toujours des instructions @autoreleasepool dans le code du modèle.

Quel est le problème ici?

48voto

Bavarious Points 43993

À partir de http://clang.llvm.org/docs/AutomaticReferenceCounting.html#autoreleasepool:

@autoreleasepool peuvent être utilisés à l'extérieur de l'ARC unités de traduction, avec l'équivalent sémantique.

et Greg Parker dit [1] [2]:

LLVM 3.0 @autoreleasepool { ... } est beaucoup plus rapide que NSAutoreleasePool si votre cible de déploiement est assez nouveau. Aucun ARC requis. (...) fonctionne toujours, mais il est plus rapide avec la cible de déploiement d'OS X 10.7 ou version 5.0 d'iOS.

Donc vous pouvez utiliser @autoreleasepool , indépendamment de l'ARC, et il va être plus rapide que l' NSAutoreleasePool sur OS X v10.7+ et iOS 5.0+.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X