Ich habe TEST=1
im Abschnitt Preprocessor Macros
des Build Settings
des Projektziels hinzugefügt, und wenn ich es im Code verwende, denkt der Präprozessor, dass er nicht definiert ist.
Zum Beispiel mit:
%Vor%hat dieses Verhalten:
// b
// b
Dies liegt daran, dass der Präprozessor TEST
nicht finden kann (selbst wenn er wie oben angegeben als 1
definiert ist), also behandelt er ihn als false
.
Gibt es eine Möglichkeit, diese Probleme zu lösen?
Bearbeiten:
Mein Anwendungsfall bezieht sich auf mehrere Projektziele. Also, sagen wir, dass das anfängliche Ziel den Namen First
hat, welches das TEST
Präprozessormakro mit dem Wert 1
definiert hat.
Wenn ich ein anderes Projektziel mit dem Namen Second
ohne definierte Präprozessor-Makros erstelle und nur Code hinzufügen möchte, wenn TEST
0
( false
/ nicht definiert) ist, werde ich es einfügen Der #else
-Block ( // b
).
Wenn man weiß, dass Syntax-Färbung und Autovervollständigung für // b
funktioniert, sieht es so aus, als ob es funktioniert, aber wenn ich das aktuelle Ziel in First
one ( Wortspiel beabsichtigt ) ändere und es sogar baue funktioniert es immer noch, da Second
ausgewählt ist.
Gehe einfach zu target- & gt; Schema bearbeiten - & gt; Ausführen - & gt; Info und überprüfen Sie die Build-Konfiguration. Stellen Sie jetzt beim Hinzufügen der Preprocessor-Makros in der Build-Einstellung sicher, dass Sie das Makro für die korrekte Build-Konfiguration und das richtige Ziel hinzufügen.
Ich habe es versucht, indem ich für meine Ziel-App (Test-ObjectiveC) sowohl Debug- als auch Release-Build hinzugefügt habe. Also, wenn ich unten Code mit dieser Einstellung versuchte, können Sie die Syntaxfarbe dementsprechend sehen.
Wenn Sie das in Swift so machen möchten, sollten Sie eine User-Defined
Einstellung namens OTHER_SWIFT_FLAGS
in Ihrem Build Settings
wie folgt hinzufügen:
Und dann in deinem Code tippst du:
%Vor%Ich weiß nicht, warum Sie das brauchen, aber es könnte interessant sein, sich in das native Xcode Target zu vertiefen, um spezifisches Verhalten für mehrere Apps mit demselben Root-Projekt zu verwenden. Wenn dies das ist, was Sie wollen, sollten Sie in einen Artikel schauen: AppCoda verwendet Ziele mit XCode .
Tags und Links xcode preprocessor preprocessor-directive