Können Präprozessordirektiven verwendet werden, um verschiedene Headerdateien für Mac und iOS zu importieren?

8

Ich schreibe eine Klassenbibliothek für Mac OS X und iOS, die als Cocoa Framework für OS X und eine statische Bibliothek für iOS veröffentlicht werden soll. Um die Sache zu vereinfachen, beabsichtige ich, mehrere Ziele in Xcode zu verwenden. Die Klassen unter Mac OS X sind jedoch mit Cocoa.h verknüpft, während sie auf iOS mit Foundation.h verlinkt sind.

Meine Fragen sind grundsätzlich:

  • Könnte das Mac OS X-Framework stattdessen mit Foundation.framework verknüpft werden? Klassen, die im Framework verwendet werden, sind NSString, NSMutableString und NSMutableArray.
  • Oder könnte ich Präprozessordirektiven in den Header-Dateien verwenden, um die Einbeziehung des Frameworks zu steuern, z. B.

    %Vor%
BWHazel 25.01.2011, 19:59
quelle

4 Antworten

20

Sie können diese verwenden, um plattformabhängigen Code zu trennen (siehe TargetConditionals.h ):

%Vor%

Hier ist ein nützliches Diagramm .

    
detunized 25.01.2011, 20:14
quelle
8
___ answer4798276 ___
  
  • Könnte das Mac OS X-Framework stattdessen mit Foundation.framework verknüpft werden? Klassen, die im Framework verwendet werden, sind NSString, NSMutableString und NSMutableArray.
  •   

Probieren Sie es aus und sehen Sie. Wenn die Kompilierung fehlschlägt, nein. Wenn es gelingt, ja.

  
  • Oder könnte ich Präprozessordirektiven innerhalb der Header-Dateien verwenden, um die Einbeziehung des Frameworks zu steuern, z. B.
  •   

Ja, das kannst du. Tatsächlich glaube ich, dass dies der einzige Weg ist, dies zu tun.

    
___ answer12687506 ___

Das funktioniert perfekt für mich:

%Vor%     
___ answer4798341 ___

Sie können diese verwenden, um plattformabhängigen Code zu trennen (siehe %code% ):

%Vor%

Hier ist ein nützliches Diagramm .

    
___ tag123objectivec ___ Dieses Tag sollte nur bei Fragen verwendet werden, die sich auf Objective-C-Features beziehen oder von Code in der Sprache abhängen. Die Tags [Kakao] und [Kakao-Touch] sollten verwendet werden, um nach Frameworks oder Klassen von Apple zu fragen. Verwenden Sie die zugehörigen Tags [ios], [macos], [apple-watch] und [tvos] für Probleme, die für diese Plattformen spezifisch sind. ___ tag123cpreprocessor ___ Der Makrovorverarbeitungsschritt der Programmiersprachen C und C ++. Dieser Tag kann auch für Fragen zu anderen Compilern / Sprachen verwendet werden, die von identischen Funktionen abgeleitet sind oder diese enthalten, z. B. die #Direktiven in Objective-C oder C #. ___ qstntxt ___

Ich schreibe eine Klassenbibliothek für Mac OS X und iOS, die als Cocoa Framework für OS X und eine statische Bibliothek für iOS veröffentlicht werden soll. Um die Sache zu vereinfachen, beabsichtige ich, mehrere Ziele in Xcode zu verwenden. Die Klassen unter Mac OS X sind jedoch mit Cocoa.h verknüpft, während sie auf iOS mit Foundation.h verlinkt sind.

Meine Fragen sind grundsätzlich:

  • Könnte das Mac OS X-Framework stattdessen mit Foundation.framework verknüpft werden? Klassen, die im Framework verwendet werden, sind NSString, NSMutableString und NSMutableArray.
  • Oder könnte ich Präprozessordirektiven in den Header-Dateien verwenden, um die Einbeziehung des Frameworks zu steuern, z. B.

    %Vor%
___ qstnhdr ___ Können Präprozessordirektiven verwendet werden, um verschiedene Headerdateien für Mac und iOS zu importieren? ___
iuriimoz 26.08.2011 16:24
quelle
2
  
  • Könnte das Mac OS X-Framework stattdessen mit Foundation.framework verknüpft werden? Klassen, die im Framework verwendet werden, sind NSString, NSMutableString und NSMutableArray.
  •   

Probieren Sie es aus und sehen Sie. Wenn die Kompilierung fehlschlägt, nein. Wenn es gelingt, ja.

  
  • Oder könnte ich Präprozessordirektiven innerhalb der Header-Dateien verwenden, um die Einbeziehung des Frameworks zu steuern, z. B.
  •   

Ja, das kannst du. Tatsächlich glaube ich, dass dies der einzige Weg ist, dies zu tun.

    
CajunLuke 25.01.2011 20:08
quelle
1

Das funktioniert perfekt für mich:

%Vor%     
Tibidabo 02.10.2012 09:12
quelle

Tags und Links