Hinzufügen eines Projekts ohne ARC in ein Projekt mit ARC

8

Im X-Code, wenn ich ein neues Projekt mit automatischer Referenzzählung (ARC) erstelle und ein bestehendes Nicht-ARC-Projekt über Datei -> Dateien hinzufügen hinzufügen (wird das als Hinzufügen zum Arbeitsbereich betrachtet? Nicht sicher über die Workspace-Begriff), würde das funktionieren? Also kann der neue Code, den ich in diesem Projekt schreibe, ein ARC-Code sein?

Wenn Sie ein Projekt auf diese Weise hinzufügen, werden die Dateien nicht in den "kompilierten Quellen" aufgelistet. Daher habe ich nichts, um "-fno-objc-arc" zu aktivieren.

Ich stelle fest, dass das MapBox-ios-Beispiel dies zu tun scheint. Fügst du es einfach rein und denkst nicht darüber nach?

Eine separate Frage ist, was passiert, wenn es sich um eine statische Bibliothek handelt, die nicht von ARC stammt (.a). Ich verlinke zu meinem ARC-Projekt? Muss ich irgendetwas Besonderes mit den Klassen in der Nicht-ARC-Bibliothek tun?

BEARBEITEN: Hallo Entschuldigung für die späte Antwort.

Fast alle von euch haben meine zweite Frage sehr gut beantwortet. Ich danke Ihnen allen dafür. Da Nverinaud der Erste ist, der diese Frage beantwortet, lerne ich, ihm den Kredit zu geben. (Es scheint eine zeitliche Begrenzung für die Gewährung der Prämie zu geben? Wenn die Antworten, die sie sind, ich möchte nverinaud den Kredit geben.)

Allerdings habe ich noch Zweifel an meiner ersten Frage. Ich füge eine nicht-ARC- "Projektdatei" selbst in mein aktuelles ARC-Projekt ein, entsprechend den Mapbox-Beispielen und Anweisungen. Ich muss betonen, dass ich die Quelldateien (.m .c) NICHT einzeln in das Projekt einfüge, sondern die Projektdatei hinzufüge. Die .m und .c scheint in einem separaten Projekt in einem separaten Ordner zu sein. Und dieses Mapbox-Projekt hat Aufrufe wie [view release] und ich BENÖTIGE das spezielle Flag -fno-objc-arc nicht, um die Warnungen stummzuschalten, weil die Warnungen nicht vorhanden sind.

Ich verstehe, dass Sie normalerweise, wenn Sie eine Nicht-ARC-Quelldatei in Ihr ARC-Projekt einfügen, eine Compiler-Warnung erhalten, die Sie die Compiler-Stufen nicht passieren lassen wird. Aber in meinem Fall bekomme ich keine. Meine Frage ist insbesondere nicht, wie man die Flagge setzt (was ich weiß), ob ich die Flagge brauche oder nicht (ich vermute ich nicht, könnte ich sogar Compiler-Warnung haben, wenn ich sie einfüge? Ich habe nicht versuche es nicht.) Denn ohne die Flagge gibt es keine Warnung. Und ich frage nach einer Erklärung, warum es keine Warnung gab und ob ich die Dinge richtig mache.

Hier ist ein Screenshot. . OfflineSpotty ist die ARC-Datei, die ich erstellt habe. MapView.xcodeproj ist das Nicht-ARC-Projekt, das ich hinzugefügt habe. Hoffentlich verdeutlicht das Bild die Dinge ein wenig.

    
huggie 23.05.2012, 09:15
quelle

4 Antworten

0
  

Laut den folgenden Kommentaren lautet die Frage: "Wie füge ich mapbox ios sdk zu meinem Projekt hinzu?"

Sie können diesen Anweisungen folgen, um eine statische Bibliothek aus einem Open-Source-Projekt in Ihr eigenes Projekt aufzunehmen: Ссылка

  

Eine separate Frage ist, was passiert, wenn es sich um eine statische Bibliothek handelt, die nicht von ARC stammt (.a). Ich verlinke zu meinem ARC-Projekt? Muss ich irgendetwas Besonderes mit den Klassen in der Nicht-ARC-Bibliothek tun?

Die statische Bibliothek ist bereits kompiliert, sodass Sie sich keine Gedanken darüber machen müssen.

    
nverinaud 04.06.2012, 11:29
quelle
10

Wenn Sie eine Nicht-ARC in ein Projekt einfügen, das ARC verwendet, müssen Sie das Compilerflag -fno-objc-arc für alle Nicht-Arc-Quelldateien festlegen.

Um dies in Xcode zu tun, gehen Sie zu Ihrem aktiven Ziel und wählen Sie die Registerkarte "Build Phases". Wählen Sie nun alle Nicht-ARC-Quelldateien aus, drücken Sie die Eingabetaste, fügen Sie -fno-objc-arc und dann "Done" ein, um ARC für diese Dateien zu deaktivieren. (leider muss diese Zeile für jede Datei hinzugefügt werden und es gibt keine Gruppenbearbeitung! :-() . Update: Markieren Sie für die Gruppenbearbeitung einfach die gewünschten Dateien und Drücken Sie Enter! (kein Doppelklick! Enter!) Das ist der Trick!: -)

Siehe Screenshot:

    
Flori 06.06.2012 18:29
quelle
1

Wenn Sie Ihrem Projekt eine kompilierte Bibliothek hinzufügen, müssen Sie sich um nichts kümmern, es spielt keine Rolle, ob es ARC ist oder nicht, weil es bereits kompiliert ist und der Compiler es daher nicht kompilieren muss . Ziehen Sie die statische Bibliothek in Ihr Projekt und stellen Sie sicher, dass Sie Ihr Ziel im Abschnitt Add to Targets des Popups auswählen.

Wenn Sie Ihrem Projekt Projektdateien hinzufügen, ziehen Sie den Ordner mit den Dateien in Ihre App. Es wird ein Popup angezeigt und unter "Zu Zielen hinzufügen" stellen Sie sicher, dass das Ziel Ihrer App ausgewählt ist. Wenn Sie dies richtig gemacht haben, werden die Nicht-Arc-Dateien im Abschnitt compile sources der Build-Phasen Ihres Ziels angezeigt. Wie andere angegeben haben, können Sie dann das -fno-objc-arc Compiler-Flag zu den Nicht-Arc-Dateien hinzufügen. Wählen Sie dazu alle Nicht-Arc-Dateien gleichzeitig aus und drücken Sie die Eingabetaste. Ein Popup wird angezeigt und Sie können -fno-objc-arc eingeben und dann Fertig drücken.

    
Michael Frederick 07.06.2012 17:29
quelle
0

Ich erinnere mich nicht genau an den Prozess, aber ich bin mir ziemlich sicher, dass ich mich daran erinnere, es in diesem Screencast zu sehen: Ссылка

    
Andrew 04.06.2012 05:27
quelle