Frage Wie kann ich ARC für eine einzelne Datei in einem Projekt deaktivieren?


Ich verwende ARC erfolgreich in meinem Projekt. Ich habe jedoch einige Dateien (z. B. in Komponententests und Scheinobjekten) gefunden, in denen die Regeln von ARC momentan etwas fragiler sind. Ich erinnere mich, dass es eine Möglichkeit gab, ARC pro Datei zu deaktivieren, obwohl ich diese Option nicht finden konnte.

Ist das möglich? Wie deaktiviere ich ARC pro Datei?


1290
2017-07-11 05:21


Ursprung


Antworten:


Es ist möglich, ARC für einzelne Dateien zu deaktivieren, indem Sie die Option -fno-objc-arc Compiler-Flag für diese Dateien.

Sie fügen Compiler-Flags unter Ziele -> Build-Phasen -> Quellen kompilieren hinzu. Sie müssen auf die rechte Spalte der Zeile doppelklicken Compiler-Flags. Sie können es auch zu mehreren Dateien hinzufügen, indem Sie die Taste cmd gedrückt halten, um die Dateien auszuwählen, und dann die Eingabetaste drücken, um das Markierungsfeld für die Markierung zu öffnen. (Beachten Sie, dass beim Bearbeiten mehrerer Dateien alle bereits vorhandenen Flags überschrieben werden.)

Ich habe ein Beispielprojekt erstellt, das ein Beispiel enthält: https://github.com/jaminguy/NoArc

xcode

Siehe diese Antwort für weitere Informationen: Deaktivieren Sie die automatische Referenzzählung für einige Dateien


2131
2017-07-12 01:22



Deaktivieren Sie ARC auf MEHRERE Dateien:

  1. Wählen Sie die gewünschten Dateien unter Target / Build Phases / Compile Sources in Xcode
  2. DRÜCKEN SIE ENTER
  3. Art -fno-objc-Bogen
  4. Drücken Sie Eingeben oder Erledigt

;)

enter image description here


454
2018-04-01 00:30



Für Xcode 4.3 könnte der einfachere Weg wie folgt aussehen: Bearbeiten / Refactor / Konvertieren in objective-C ARC, dann check die Dateien, die nicht konvertiert werden sollen. Ich finde auf diese Weise das gleiche wie die Verwendung des Compiler-Flags oben.


42
2017-07-18 22:28



Es ist eine sehr einfache Möglichkeit, eine einzelne Datei nicht bogenförmig zu machen.

Befolgen Sie die folgenden Schritte:

ARC für einzelne Datei deaktivieren:

  1. Wählen Sie die gewünschten Dateien unter Target / Build Phases / Compile Sources in Xcode

  2. Wählen Sie die .m-Datei, die Sie NON-ARC machen möchten DRÜCKEN SIE ENTER Art -fno-objc-Bogen

Nicht-ARC-Datei an ARC-Projektflag: -fno-objc-arc

ARC-Datei für Nicht-ARC-Projektflag: -fobjc-arc


34
2017-07-05 05:55



Hinweis: Wenn Sie möchten Deaktivieren Sie ARC für viele Dateien, Sie müssen:

  1. Öffnen Sie "Build phases" -> "Quellen kompilieren"
  2. Wählen Sie Dateien mit aus "linke_Maus" + "cmd" (für getrennte Dateien) oder + "Verschiebung"  (für gruppierte Dateien - wählen Sie zuerst und zuletzt)
  3. Drücken Sie Enter"
  4. Einfügen -fno-objc-arc
  5. Drücken Sie erneut "Enter"
  6. profitieren!

33
2018-03-07 12:53



Benutze einfach die -fno-objc-arc Flagge ein Build Phases>Compile Sources


20
2017-11-28 09:56



  1. Wählen Sie das Xcode-Projekt
  2. Gehe zu Zielen
  3. Wählen Sie den Abschnitt Build-Phasen
  4. Wählen Sie im Bereich Build-Phasen die Quellen kompilieren.
  5. Wählen Sie die Datei aus, in der ARC nicht deaktiviert werden soll, und fügen Sie -fno-objc-arc hinzu

Disable ARC for a particular file


11
2018-01-20 09:03



Es ist möglich, ARC (Automatic Reference Counting) für bestimmte Dateien in Xcode zu deaktivieren.

Wählen Sie Target -> Build Phases -> Compile Sources -> Wählen Sie File (Doppelklick) -> Fügen Sie "-fno-objc-arc" zum Popup-Fenster hinzu.

Ich hatte diese Situation bei der Verwendung von "Reachibility" -Dateien festgestellt.

Dies wird in der folgenden Abbildung gezeigt:

enter image description here


10
2018-03-20 14:24



Verwenden Sie -fno-objc-arc für jede Datei in den Build-Phasen


9
2017-09-25 10:24



Die vier obligatorischen Schritte, wie in diesem Abschnitt erläutert Video

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

9
2017-10-21 19:16



Bitte folge einfach dem Screenshot und gib ein -fno-objc-Bogen .

enter image description here


5
2017-09-02 15:08