Ho letto un sacco di domande sulla creazione di una libreria multipiattaforma per questi 2 sistemi. Ogni risposta punta alla libreria statica come soluzione.Creazione di una classe multipiattaforma iOS/OS X
Non voglio finire con una libreria statica, mi piacerebbe creare una classe con metodi per iOS e la loro controparte per OS X.
-(void)createColor:(NSColor*);
-(void)createColor:(UIColor*);
Il primo problema che ho è che non riesco a trovare un modo per utilizzare le classi che sono disponibili solo in un sistema specifico. Quindi, ad esempio, come posso gestire una funzione che funziona con UIColor
in iOS e con NSColor
in OS X?
Se creo un progetto per iOS, quando guardo su Foundation.h
non riesco a trovare NSColor.h
nell'elenco di intestazioni.
Ho pensato di utilizzare le definizioni TARGET_OS_MAC
e TARGET_OS_IPHONE
per fare una distinzione tra i due sistemi ... Sono sulla buona strada?
EDIT per aggiungere ulteriori informazioni:
Al momento ho 2 obiettivi: un iOSTestApp e OSxTestApp. Per questi obiettivi ho incluso i quadri necessari a seconda del sistema.
L'utilizzo di TARGET_OS_MAC
e TARGET_OS_IPHONE
funziona solo quando si seleziona l'OSXTestApp come destinazione attiva. Quando seleziono l'iOSAppTest, Xcode restituisce gli errori di tipo di dati OS X (cioè NSColor
)
Ecco un esempio del codice che produce questi errori:
#if TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#elif TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#endif
Mentre se invertire la definizioni funziona .. . Ecco un esempio del codice che produce questi errori:
#if TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#elif TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#endif
ha risposto che è necessario un lib statico per IOS - il resto della domanda non ottengo –
Non riesco a capire il voto negativo. Comunque non voglio creare una libreria dinamica ... Se ti dicessi che voglio creare una piattaforma multipla di classe Helper, suona meglio? – MatterGoal
perché la domanda non mi è chiara e il tuo commento non aiuta: D il titolo è "creare una libreria non statica" mentre dici "Non voglio una lib dinamica": D –