J'ai téléchargé le SDK iOS 5 et j'ai découvert que l'ARC est une excellente fonctionnalité du nouveau compilateur Apple. Pour le moment, de nombreux frameworks tiers ne prennent pas en charge ARC. Puis-je utiliser ARC pour mon nouveau code et conserver le code de conservation / libération actuel inchangé? Le convertisseur ARC ne fonctionne pas ici, car certains frameworks, tels que JSONKit, ne peuvent pas être convertis en ARC à l'aide du convertisseur.
Éditer:
La réponse est d'ajouter -fno-objc-arc
aux indicateurs du compilateur pour les fichiers dont vous ne voulez pas ARC. Dans Xcode 4, vous pouvez le faire sous votre cible -> Phases de construction -> Sources de compilation.
objective-c
ios5
automatic-ref-counting
non amélif
la source
la source
.m
fichier. Pas le.h
fichier.Réponses:
La documentation ARC publique , bien qu'elle ne soit pas directement claire sur ce point, semble suggérer que tant que chaque classe est soit entièrement ARC soit gérée manuellement, les classes peuvent être intégrées dans un seul programme.
Vous ne pouvez pas mélanger ARC et non-ARC dans une seule classe; le document dit que l' envoi
retain
,release
,autorelease
ouretainCount
messages par tout moyen (y compris les minuteries et exécute retardées, ce qui l' utilisation@selector
) est interdite dans le code ARC. Vous ne pouvez donc pas faire de non-ARC dans une classe ARC (car les messages nécessaires sont interdits) et vous ne pouvez pas faire d'ARC dans une classe non-ARC (car ARC ajoute des éléments de syntaxe qui ne sont pas valides sans ARC).Le même document est un peu plus clair sur la possibilité d'intégrer des bibliothèques / frameworks non-ARC dans un programme ARC: Oui. Il ne mentionne pas si vous pouvez utiliser des bibliothèques / frameworks ARC dans un programme où tout votre code n'est pas ARC, mais étant donné tout ce qui précède, l'implication semble être oui.
la source
#import
insérant à partir de fichiers de module. Le réglage des indicateurs du compilateur est pour chaque fichier de module (plus précisément, chaque fichier dans la phase de construction «Compiler les sources»). Le compilateur n'a aucun moyen de savoir s'il doit utiliser ARC ou non pour un autre fichier, sauf en héritant du choix qui lui a été donné pour le fichier de module avec lequel il a commencé.Il n'est pas très intuitif de désactiver ARC sur MULTIPLES fichiers, pendant un certain temps , j'étais le faire un par un jusqu'à ce compris comment faire.
la source
Si vous souhaitez désactiver le comptage automatique des références pour certains fichiers, il est très simple de suivre les étapes suivantes. Vous ajoutez des indicateurs de compilateur dans Targets -> Build Phases -> Compile Sources.
Le drapeau utilisé est -fno-objc-arc appuyez sur Entrée après l'avoir écrit.! Vous devez double-cliquer sur la colonne de droite de la ligne sous Drapeaux du compilateur. J'espère que cela aide Merci :)
la source
-fobjc-arc
.Il est possible de désactiver ARC pour des fichiers individuels en ajoutant l'indicateur de compilateur -fno-objc-arc pour ces fichiers.
Comment puis-je désactiver ARC pour un seul fichier dans un projet?
la source