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


1342

Ich verwende ARC erfolgreich in meinem Projekt. Ich bin jedoch auf einige Dateien gestoßen (z. B. in Unit-Tests und Scheinobjekten), in denen die Regeln von ARC derzeit 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?


Antworten:


2168

Sie können ARC für einzelne Dateien deaktivieren, indem Sie das -fno-objc-arcCompiler-Flag für diese Dateien hinzufügen .

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

Ich habe ein Beispielprojekt mit einem Beispiel erstellt: https://github.com/jaminguy/NoArc

xcode

Weitere Informationen finden Sie in dieser Antwort: Deaktivieren Sie die automatische Referenzzählung für einige Dateien


58
Der Ort, an dem diese Flagge hinzugefügt werden kann, ist also nicht zu intuitiv. In Xcode 4, in Erstellungsphasen und beim Kompilieren von Quellen gibt es jedoch tatsächlich zwei Spalten. Eine für den Dateinamen und eine für die Kompilierungsflags für diese eine Datei. Hier geben Sie dieses spezielle Compiler-Flag ein.
Casademora

3
Können Sie für ein Verzeichnis angeben, dh für alle Dateien in einem Verzeichnis? Was ist mit einer Gruppe?
ma11hew28

4
Keine Verzeichnisse.
Jeweils

13
@casademora Sie können nicht genug Upvotes für diese Information bekommen. Vielen Dank.
TheTRON

26
@casademora Sie können mehrere Dateien gleichzeitig auswählen - aber dann nicht doppelklicken, sondern RETURN drücken. Fügen -fno-objc-arcSie dann einfach das hinzu und es wird allen ausgewählten Dateien hinzugefügt. edit sah gerade die Antwort unter dieser :(
pkyeck

460

Deaktivieren Sie ARC für MEHRERE Dateien:

  1. Wählen Sie die gewünschten Dateien unter Ziel / Phasen erstellen / Quellen kompilieren in Xcode aus
  2. DRÜCKEN SIE ENTER
  3. Typ -fno-objc-Bogen
  4. Drücken Sie die Eingabetaste oder Fertig

;)

Geben Sie hier die Bildbeschreibung ein


2
Danke! Ich habe lange nach dieser Funktion gesucht. Ein Doppelklick funktioniert nicht, wenn mehrere Zeilen ausgewählt sind, die Eingabetaste jedoch. So seltsam.
Bobmoff

4
Oh wow. Ich würde mein ganzes Karma ausgeben, um dies wieder zu verbessern. Danke für das Teilen!
Jemmons

Dies scheint unter Xcode 4.3.3 nicht mehr zu funktionieren. Doppelklicken Sie auf die ausgewählten Dateien oder drücken Sie die Eingabetaste. Der Dialog zum Einfügen des Flags -fno-ojbc-arc wird nicht angezeigt. Hat jemand eine Problemumgehung dafür?
Tom

Ich hatte 4.3.3 und jetzt 4.4 DP7 und es funktioniert immer noch gut. Starten Sie Xcode neu, starten Sie den Computer neu und reparieren Sie die Berechtigungen.
Tibidabo

44

Für Xcode 4.3 ist der einfachere Weg möglicherweise: Bearbeiten / Refaktorieren / In Ziel-C-ARC konvertieren und dann die Dateien abhaken, die nicht konvertiert werden sollen. Ich finde das genauso wie oben mit dem Compiler-Flag.


36

Es ist sehr einfach, einzelne Dateien nicht bogenförmig zu machen.

Befolgen Sie die folgenden Schritte:

Deaktivieren Sie ARC für einzelne Dateien:

  1. Wählen Sie die gewünschten Dateien unter Ziel / Phasen erstellen / Quellen kompilieren in Xcode aus

  2. Wählen Sie die .m-Datei aus, die Sie erstellen möchten. NON-ARC PRESS ENTER Geben Sie -fno-objc-arc ein

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

ARC-Datei in Nicht-ARC-Projektflag: -fobjc-arc


35

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

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

22

Verwenden Sie einfach die -fno-objc-arcFlagge in Build Phases>Compile Sources


13
  1. Wählen Sie Xcode-Projekt
  2. Gehe zu Zielen
  3. Wählen Sie den Abschnitt Build-Phasen
  4. Wählen Sie im Abschnitt Build-Phasen die Kompilierungsquellen aus.
  5. Wählen Sie die Datei aus, für die Sie ARC nicht deaktivieren möchten, und fügen Sie -fno-objc-arc hinzu

Deaktivieren Sie ARC für eine bestimmte Datei


13

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

Wählen Sie Ziel -> Phasen erstellen -> Quellen kompilieren -> Datei auswählen (Doppelklick) -> Fügen Sie dem Popup-Fenster "-fno-objc-arc" hinzu.

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

Dies ist in der folgenden Abbildung dargestellt:

Geben Sie hier die Bildbeschreibung ein



11

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

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


6

Wenn Sie Unity verwenden, müssen Sie dies in Xcode nicht ändern. Sie können ein Kompilierungsflag in den Metadaten für die spezifischen Dateien direkt in Unity anwenden. Wählen Sie sie einfach im Projektfenster aus und wenden Sie sie im Inspektorfenster an. Dies ist wichtig, wenn Sie Cloud Build verwenden möchten.Geben Sie hier die Bildbeschreibung ein


5

Fügen Sie das Flag "-fno-objc-arc" hinzu.

Befolgen Sie einfach die folgenden Schritte: App> Ziele> Phasen erstellen> Quellen kompilieren> Flag nach Klasse "-fno-objc-arc hinzufügen"


5

Ich denke, alle anderen Antworten erklären, wie man MRC (Manual Reference Count) deaktiviert und ARC (Automatic Reference Count) aktiviert. So verwenden Sie MRC (Manual Reference Count), dh Deaktivieren von ARC (Automatic Reference Count) für MEHRERE Dateien:

  1. Wählen Sie die gewünschten Dateien unter Ziel / Phasen erstellen / Quellen kompilieren in Xcode aus
  2. DRÜCKEN SIE ENTER
  3. Geben Sie -fobjc-arc ein
  4. Drücken Sie die Eingabetaste oder Fertig

2

Verwenden Sie einfach das Flag -fno-objc-arc unter Build-Phasen> Quellen kompilieren vor Dateien, auf die ARC nicht angewendet werden soll.


-1
  1. Wählen Sie Projekt -> Ziele -> Erstellungsphasen -> Compilerquellen
  2. Wählen Sie Datei -> Compiler-Flags
  3. füge -fno-objc-arc hinzu

-2

Gehen Sie zu App -> dann Ziele -> Phasen erstellen -> Quelle kompilieren

Wählen Sie nun die Datei aus, in der Sie ARC deaktivieren möchten

Fügen Sie dieses Snippet "-fno-objc-arc" ein. Drücken Sie nach dem Einfügen die EINGABETASTE

in jeder Datei, in der Sie ARC deaktivieren möchten.


5
Ihre Antwort enthält keine Ergänzung zu dieser alten Frage.
Vikingosegundo

-2

Befolgen Sie den folgenden Schritt, um die Deaktivierung von ARC zu aktivieren

Xcode-Projekt auswählen Zu Zielen wechseln Wählen Sie den Abschnitt Build-Phasen aus. Wählen Sie im Abschnitt Build-Phasen die Kompilierungsquellen aus. Wählen Sie die Datei aus, für die Sie ARC nicht deaktivieren möchten, und fügen Sie -fno-objc-arc hinzu


1
Ihre Antwort enthält keine Ergänzung zu dieser alten Frage.
Jomafer

Welchen Zusatz brauchen. Wenn Sie es besser wissen, als uns zur Verfügung zu stellen.
Annu

Ich habe dich nicht abgelehnt. Es ist nur diese Frage wurde am 11. Juli 11 um 5:21 gestellt. Es gibt zu viele Antworten mit der gleichen Antwort, die keine nützlichen Informationen hinzufügen ... Ich vermute, dass jemand Sie aus diesem Grund
abgelehnt hat

Kannst du mir einen kurzen Überblick geben?
Annu
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.