Erstellen einer plattformübergreifenden iOS / OS X-Klasse
Ich habe viele Fragen zum Erstellen einer plattformübergreifenden Bibliothek für diese beiden Systeme gelesen. Jede Antwort verweist auf eine statische Bibliothek als Lösung.
Ich möchte nicht mit einer statischen Bibliothek enden, sondern eine Klasse mit Methoden für iOS und deren Gegenstück für OS X erstellen.
-(void)createColor:(NSColor*);
-(void)createColor:(UIColor*);
Das erste Problem, das ich habe, ist, 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 funktioniert?UIColor
in iOS und mitNSColor
in OS X?
Wenn ich ein Projekt für iOS erstelle, wenn ich es mir anschaueFoundation.h
Ich kann nicht findenNSColor.h
in der Header-Liste.
Ich dachte, das zu benutzenTARGET_OS_MAC
undTARGET_OS_IPHONE
Definitionen zur Unterscheidung der beiden Systeme ... bin ich auf dem richtigen Weg?
BEARBEITEN, um weitere Informationen hinzuzufügen:
Im Moment habe ich 2 Ziele: eine iOSTestApp und eine OSxTestApp. Für diese Ziele habe ich je nach System die benötigten Frameworks eingebunden.
VerwendenTARGET_OS_MAC
undTARGET_OS_IPHONE
funktioniert nur, wenn ich die OSXTestApp als aktives Ziel auswähle. Wenn ich den iOSAppTest auswähle, gibt Xcode Fehler für den OS X-Datentyp zurück (d. H.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 invertiere, es funktioniert ... Hier ein Beispiel des Codes, der diese Fehler erzeugt:
#if TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#elif TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#endif