Ich habe viele Fragen zum Erstellen einer plattformübergreifenden Bibliothek für diese beiden Systeme gelesen. Jede Antwort verweist auf die statische Bibliothek als Lösung.Erstellen einer plattformübergreifenden iOS/OS X-Klasse
Ich will nicht mit einer statischen Bibliothek, um am Ende, würde Ich mag eine Klasse mit Methoden für iOS und ihr Pendant für OS X ist
-(void)createColor:(NSColor*);
-(void)createColor:(UIColor*);
Das erste Problem, das ich habe erstellen dass ich keine Möglichkeit finde, Klassen zu verwenden, die nur in einem bestimmten System verfügbar sind. Wie könnte ich zum Beispiel eine Funktion verwalten, die mit UIColor
in iOS und mit NSColor
in OS X funktioniert?
Wenn ich ein Projekt für iOS erstellen, wenn ich in Foundation.h
aussehen kann ich nicht NSColor.h
in der Header-Liste finden.
Ich dachte, die TARGET_OS_MAC
und TARGET_OS_IPHONE
Definitionen zu verwenden, um zwischen den beiden Systemen zu unterscheiden ... Ich bin auf dem richtigen Weg?
EDIT weitere Informationen hinzuzufügen:
Im Moment habe ich 2 Ziele: eine iOSTestApp und OSxTestApp. Für diese Ziele habe ich je nach System die benötigten Frameworks eingebunden.
Die Verwendung von TARGET_OS_MAC
und TARGET_OS_IPHONE
funktioniert nur, wenn ich die OSXTestApp als aktives Ziel auswähle. Wenn ich die iOSAppTest wählen, kehrt Xcode Fehler für OS X-Datentyp (dh NSColor
)
Hier ein Beispiel für den Code, der diese Fehler erzeugt:
#if TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#elif TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#endif
Während, wenn ich die Definitionen invertieren es funktioniert .. . Hier ist ein Beispiel für den Code , die diese Fehler erzeugt:
#if TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#elif TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#endif
antwortete, dass Sie eine statische lib für IOS benötigen - der Rest Ihrer Frage bekomme ich nicht –
Ich kann nicht verstehen, die Abstimmung unten. Trotzdem möchte ich keine dynamische Bibliothek erstellen ... Wenn ich Ihnen gesagt habe, dass ich eine Helper Class Multi-Plattform erstellen will, klingt es besser? – MatterGoal
, weil die Frage für mich wirklich unklar ist und Ihr Kommentar nicht hilft: D der Titel ist "eine nicht statische Bibliothek erstellen", während Sie sagen, dass ich nicht eine dynamische Bibliothek möchte: D –