Comment désactiver ARC pour un seul fichier d'un projet?

1342

J'utilise ARC avec succès dans mon projet. Cependant, j'ai rencontré quelques fichiers (par exemple, dans des tests unitaires et des objets fictifs) où les règles d'ARC sont un peu plus fragiles en ce moment. Je me souviens avoir entendu qu'il y avait un moyen de désactiver ARC sur une base par fichier, même si je n'ai pas pu trouver cette option.

Est-ce possible? Comment désactiver ARC par fichier?

casademora
la source

Réponses:

2168

Il est possible de désactiver ARC pour des fichiers individuels en ajoutant l' -fno-objc-arcindicateur de compilation pour ces fichiers.

Vous ajoutez des drapeaux de compilation dans Targets -> Build Phases -> Compile Sources. Vous devez double-cliquer sur la colonne de droite de la ligne sous Indicateurs du compilateur . Vous pouvez également l'ajouter à plusieurs fichiers en maintenant le bouton cmd pour sélectionner les fichiers, puis en appuyant sur Entrée pour faire apparaître la boîte d'édition des drapeaux. (Notez que la modification de plusieurs fichiers remplacera tous les indicateurs qu'il peut déjà avoir.)

J'ai créé un exemple de projet qui a un exemple: https://github.com/jaminguy/NoArc

xcode

Voir cette réponse pour plus d'informations: Désactiver le comptage automatique des références pour certains fichiers

jaminguy
la source
58
Donc, l'endroit pour ajouter ce drapeau n'est pas trop intuitif. Mais, dans Xcode 4, dans les phases de construction et les sources de compilation, il y a en fait deux colonnes. Un pour le nom de fichier et un autre pour les drapeaux de compilation pour ce fichier. C'est là que vous entrez cet indicateur de compilateur spécifique.
casademora
3
Pouvez-vous spécifier un répertoire, c'est-à-dire tous les fichiers d'un répertoire? Et pour un groupe?
ma11hew28
4
Pas de répertoires. Un seul fichier à la fois dans les paramètres de construction :(
casademora
13
@casademora, vous ne pouvez pas obtenir suffisamment de votes positifs pour cette information. Je vous remercie.
theTRON
26
@casademora vous pouvez sélectionner plusieurs fichiers à la fois - mais ensuite ne double-cliquez pas mais appuyez sur RETOUR. il suffit ensuite d'ajouter le -fno-objc-arcet il sera ajouté à tous les fichiers sélectionnés. edit vient de voir la réponse en dessous de celui-ci :(
pkyeck
460

Désactivez ARC sur plusieurs fichiers:

  1. Sélectionnez les fichiers souhaités dans Target / Build Phases / Compile Sources in Xcode
  2. APPUYEZ SUR ENTRÉE
  3. Type -fno-objc-arc
  4. Appuyez sur Entrée ou Terminé

;)

entrez la description de l'image ici

Tibidabo
la source
2
THX! Je recherche cette fonctionnalité depuis longtemps. Double-cliquer ne fonctionne pas lorsque plusieurs lignes sont sélectionnées, mais appuyer sur Entrée le fait. Si étrange.
bobmoff
4
Oh wow. Je dépenserais tout mon karma pour voter à nouveau. Merci d'avoir partagé!
jemmons
cela ne semble plus fonctionner sur Xcode 4.3.3. double-cliquez ou appuyez sur Entrée sur les fichiers sélectionnés ne fait pas apparaître la boîte de dialogue pour mettre le drapeau -fno-ojbc-arc, quelqu'un a une solution à cela?
Tom
J'avais 4.3.3 et maintenant 4.4 DP7 et cela fonctionne toujours très bien. Essayez de redémarrer Xcode, de redémarrer la machine et de réparer les autorisations.
Tibidabo
44

Pour Xcode 4.3, le moyen le plus simple pourrait être: Éditer / Refactoriser / Convertir en objectif-C ARC, puis cocher les fichiers que vous ne voulez pas convertir. Je trouve cela de la même manière que l'utilisation de l'indicateur de compilation ci-dessus.

Jingjie Zhan
la source
36

C'est un moyen très simple de créer un fichier individuel sans arc.

Suivez les étapes ci-dessous:

Désactivez ARC sur un fichier individuel:

  1. Sélectionnez les fichiers souhaités dans Target / Build Phases / Compile Sources in Xcode

  2. Sélectionnez le fichier .m que vous voulez en faire NON-ARC PRESS ENTER Tapez -fno-objc-arc

Fichier non ARC vers l'indicateur de projet ARC: -fno-objc-arc

Fichier ARC vers l'indicateur de projet non ARC: -fobjc-arc

Dipak Narigara
la source
35

Remarque: si vous souhaitez désactiver ARC pour de nombreux fichiers , vous devez:

  1. ouvrir "Phases de construction" -> "Compiler les sources"
  2. sélectionnez les fichiers avec "left_mouse" + "cmd" (pour les fichiers séparés) ou + "shift" (pour les fichiers groupés - sélectionnez le premier et le dernier)
  3. appuyez sur Entrée"
  4. pâte -fno-objc-arc
  5. appuyez à nouveau sur "enter"
  6. profit!
digipeople
la source
22

Utilisez simplement le -fno-objc-arcdrapeau dans Build Phases>Compile Sources

Rahul Gupta
la source
13
  1. Sélectionnez le projet Xcode
  2. Aller aux cibles
  3. Sélectionnez la section Build phases
  4. Dans la section des phases de construction, sélectionnez les sources de compilation.
  5. Sélectionnez le fichier que vous ne souhaitez pas désactiver ARC et ajoutez -fno-objc-arc

Désactiver ARC pour un fichier particulier

user2538944
la source
13

Il est possible de désactiver ARC (Automatic Reference Counting) pour un fichier particulier dans Xcode.

Sélectionnez Target -> Build Phases -> Compile Sources -> Select File (double click) -> Add "-fno-objc-arc" to pop-up window.

J'avais rencontré cette situation lors de l'utilisation des fichiers "Reachibility".

Ceci est illustré dans la figure ci-dessous:

entrez la description de l'image ici

Jayprakash Dubey
la source
11

utilisez -fno-objc-arc pour chaque fichier dans les phases de construction

Amit Agrawal
la source
11

Les quatre étapes obligatoires comme expliqué dans cette vidéo

    //1. Select desired files
    //2. Target/Build Phases/Compile Sources
    //3. Type -fno-objc-arc
    //4. Done
user2554822
la source
8

Veuillez suivre la capture d'écran et entrez -fno-objc-arc .

entrez la description de l'image ici

Tunvir Rahman Tusher
la source
6

Si vous utilisez Unity, vous n'avez pas besoin de le changer dans Xcode, vous pouvez appliquer un indicateur de compilation dans les métadonnées du ou des fichiers spécifiques, directement dans Unity. Sélectionnez-les simplement dans le panneau Projet et appliquez-les dans le panneau Inspecteur. Ceci est essentiel si vous prévoyez d'utiliser Cloud Build.entrez la description de l'image ici

Groenland
la source
5

Ajoutez l'indicateur «-fno-objc-arc».

Suivez les étapes simples: App> Targets> Build Phases> Compile Sources> add flag after class “-fno-objc-arc”

Manoj Chandel
la source
5

Je pense que toutes les autres réponses expliquent comment désactiver MRC (Manual Reference Count) et activer ARC (Automatic Reference Count). Pour utiliser MRC (Manual Reference Count), c'est-à-dire désactiver ARC (Automatic Reference Count) sur PLUSIEURS fichiers:

  1. Sélectionnez les fichiers souhaités dans Target / Build Phases / Compile Sources in Xcode
  2. APPUYEZ SUR ENTRÉE
  3. Tapez -fobjc-arc
  4. Appuyez sur Entrée ou Terminé
Vin
la source
2

Utilisez simplement l'indicateur -fno-objc-arc dans Build Phases> Compile Sources devant les fichiers auxquels vous ne voulez pas que ARC s'applique.

C_compnay
la source
-1
  1. sélectionner un projet -> cibles -> phases de construction -> sources du compilateur
  2. sélectionner un fichier -> drapeaux du compilateur
  3. ajouter -fno-objc-arc
Mnsd
la source
-2

Allez dans l'application -> puis Cibles -> Phases de construction -> Source de compilation

Maintenant, sélectionnez le fichier dans lequel vous souhaitez désactiver ARC

collez cet extrait "-fno-objc-arc" Après avoir collé, appuyez sur ENTER

dans chaque fichier où vous souhaitez désactiver ARC.

adijazz91
la source
5
votre réponse n'ajoute rien à cette ancienne question.
vikingosegundo
-2

Étape suivante pour activer la désactivation de l'ARC

Sélectionner un projet Xcode Aller aux cibles Sélectionner la section Phases de construction Dans la section des phases de construction, sélectionner les sources de compilation. Sélectionnez le fichier que vous ne souhaitez pas désactiver ARC et ajoutez -fno-objc-arc

annu
la source
1
votre réponse n'ajoute rien à cette ancienne question.
jomafer
Quel besoin supplémentaire. si vous savez mieux que nous fournir.
2015
Je ne t'ai pas déçu. C'est juste que cette question a été posée le 11 juillet 2011 à 5h21. Il y a trop de réponses avec la même réponse qui n'ajoutent aucune information utile ... Je soupçonne que quelqu'un vous dévalise pour cette raison ...
jomafer
pouvez-vous me donner quelques informations à ce sujet.
2015 à 12h48