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 meinen neuen Code verwenden und den aktuellen Aufbewahrungs- / Freigabecode unverändert lassen? Der ARC-Konverter funktioniert hier nicht, da einige Frameworks wie JSONKit mithilfe des Konverters nicht in ARC konvertiert werden können.
Bearbeiten:
Die Antwort besteht darin -fno-objc-arc
, den Compiler-Flags die Dateien hinzuzufügen , für die Sie kein ARC benötigen. In Xcode 4 können Sie dies unter Ihrem Ziel tun -> Phasen erstellen -> Quellen kompilieren.
objective-c
ios5
automatic-ref-counting
nichtschmelzend
quelle
quelle
.m
Datei hinzu. Nicht die.h
Datei.Antworten:
Die öffentlichen ARC-Dokumente sind zwar in diesem Punkt nicht direkt klar, scheinen jedoch darauf hinzudeuten, dass die Klassen in ein einziges Programm integriert werden können, solange jede Klasse entweder nur ARC oder alle manuell verwaltet wird.
Sie können ARC und Nicht-ARC nicht nur in einer Klasse mischen. Das Dokument sagt , dass das Senden
retain
,release
,autorelease
, oderretainCount
Nachrichten mit allen Mitteln (einschließlich Zeitgeber und verzögert führt, die den Einsatz@selector
) in ARC Code verboten ist. Sie können also in einer ARC-Klasse kein Nicht-ARC ausführen (da die erforderlichen Nachrichten gesperrt sind) und in einer Nicht-ARC-Klasse kein ARC ausführen (da ARC Syntaxelemente hinzufügt, die ohne ARC ungültig sind).Das gleiche Dokument ist 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 Ihr gesamter Code nicht ARC ist, aber angesichts all der oben genannten Punkte scheint die Implikation ja zu sein.
quelle
#import
Sie sie aus Moduldateien verwenden. Die Einstellung für Compiler-Flags gilt für jede Moduldatei (genauer gesagt für jede Datei in der Erstellungsphase „Quellen kompilieren“). Der Compiler kann nicht wissen, ob er ARC für eine andere Datei verwenden soll oder nicht, es sei denn, er erbt die Auswahl, die er für die Moduldatei getroffen hat, mit der er begonnen hat.Es ist nicht sehr intuitiv, ARC für MEHRERE Dateien zu deaktivieren. Eine Weile habe ich es einzeln gemacht, bis ich herausgefunden habe, wie das geht.
quelle
Wenn Sie die automatische Referenzzählung für einige Dateien deaktivieren möchten, müssen Sie nur die folgenden Schritte ausführen. Fügen Sie unter Ziele -> Phasen erstellen -> Quellen kompilieren Compiler-Flags hinzu.
Das verwendete Flag ist -fno-objc-arc. Drücken Sie nach dem Schreiben die Eingabetaste.! Sie müssen auf die rechte Spalte der Zeile unter Compiler Flags doppelklicken. Hoffe es hilft Danke :)
quelle
-fobjc-arc
.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?
quelle