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?


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


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


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.


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


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!

22

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


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


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


11

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


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


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


5

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

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


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é

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.


-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

-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.


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.