webentwicklung-frage-antwort-db.com.de

Deaktivieren Sie die automatische Referenzzählung für einige Dateien

Ich habe das iOS 5 SDK heruntergeladen und festgestellt, dass ARC eine großartige Funktion des neuen Apple Compilers ist. Derzeit unterstützen viele Frameworks von Drittanbietern ARC nicht. Könnte ich ARC für verwenden? Mein neuer Code und der aktuelle Retain/Release-Code bleiben unverändert? Der ARC-Konverter funktioniert hier nicht, da einige Frameworks, wie z. B. JSONKit, mithilfe des Konverters nicht in ARC konvertiert werden können.

Bearbeiten:

Die Antwort ist, -fno-objc-arc Zu den Compiler-Flags für die Dateien hinzuzufügen, für die Sie kein ARC wünschen. In Xcode 4 können Sie dies unter "Ziel" -> "Phasen erstellen" -> "Quellen kompilieren" tun.

183
nonamelive

Die öffentlichen ARC-Dokumente Obwohl diesbezüglich nicht direkt klar ist, scheint dies darauf hinzudeuten, dass die Klassen in ein einziges Programm integriert werden können, solange jede Klasse entweder vollständig oder manuell verwaltet wird.

Sie können ARC und Nicht-ARC nur in einer Klasse mischen. Das Dokument besagt, dass das Senden von retain-, release-, autorelease- oder retainCount -Nachrichten auf irgendeine Weise (einschließlich Timer und verzögerte Ausführung, die @selector) ist im ARC-Code gesperrt. Sie können also in einer ARC-Klasse kein Nicht-ARC ausführen (da die erforderlichen Nachrichten gesperrt sind) und Sie können in einer Nicht-ARC-Klasse kein ARC ausführen (weil ARC Syntaxelemente hinzufügt, die ohne ARC ungültig sind).

Im selben Dokument wird etwas klarer, ob Sie Nicht-ARC-Bibliotheken/Frameworks in ein ARC-Programm integrieren können: Ja. Es wird nicht erwähnt, ob Sie ARC-Bibliotheken/Frameworks in einem Programm verwenden können, in dem der gesamte Code nicht von ARC stammt. Angesichts der oben genannten Umstände scheint die Implikation jedoch "Ja" zu sein.

73
Peter Hosey

Es ist nicht sehr intuitiv, wie man ARC für MEHRERE -Dateien deaktiviert. Ich habe es eine Zeit lang nacheinander gemacht, bis ich herausgefunden habe, wie das geht.

  1. Gewünschte auswählen Dateien unter Target/Build Phases/Compile Sources in Xcode (CMD + Klick oder Shift + Klick)
  2. EINGABETASTE (Doppelklick setzt die Auswahl zurück, so dass es nicht funktioniert)
  3. Geben Sie - fno-objc-arc ein
  4. Drücken Sie die Eingabetaste oder Fertig
78
Tibidabo

Wenn Sie die automatische Referenzzählung für einige Dateien deaktivieren möchten, gehen Sie ganz einfach wie folgt vor: Sie fügen Compiler-Flags unter Ziele -> Phasen erstellen -> Quellen kompilieren hinzu.

xcode

Das verwendete Flag ist - fno-objc-arc Drücken Sie die Eingabetaste, nachdem Sie es geschrieben haben.! Sie müssen auf die rechte Spalte der Zeile unter Compiler Flags doppelklicken. Hoffe es hilft Danke :)

35
Nikhil Bansal

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

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

2
Naveen