Criando uma classe de plataforma cruzada do iOS / OS X

Eu li muitas perguntas sobre como criar uma biblioteca multi-plataforma para esses dois sistemas. Cada resposta aponta para a biblioteca estática como a solução.

Eu não quero acabar com uma biblioteca estática, gostaria de criar uma classe com métodos para iOS e sua contraparte para o OS X.

-(void)createColor:(NSColor*);
-(void)createColor:(UIColor*);

O primeiro problema que tenho é que não consigo encontrar uma maneira de usar classes que estão disponíveis apenas em um sistema específico. Então, por exemplo, como eu poderia gerenciar uma função que funciona comUIColor no iOS e comNSColor no OS X?

Se eu criar um projeto para iOS, quando eu olharFoundation.h Não consigo encontrarNSColor.h na lista de cabeçalhos.

Eu pensei em usar oTARGET_OS_MAC eTARGET_OS_IPHONE definições para fazer uma distinção entre os dois sistemas ... Eu estou no caminho certo?

EDIT para adicionar mais informações:

No momento eu tenho 2 alvos: um iOSTestApp e OSxTestApp. Para essas metas, incluí as estruturas necessárias, dependendo do sistema.

UsandoTARGET_OS_MAC eTARGET_OS_IPHONE funciona apenas quando eu seleciono o OSXTestApp como destino ativo. Quando seleciono o iOSAppTest, o Xcode retorna erros para o tipo de dados do OS X (por exemplo,NSColor)

Aqui um exemplo do código que produz esses erros:

#if TARGET_OS_MAC
-(void)createColor:(NSColor*)color;    

#elif TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;

#endif

Enquanto se inverto as definições, funciona ... Aqui está um exemplo do código que produz esses erros:

#if TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;

#elif TARGET_OS_MAC
-(void)createColor:(NSColor*)color;

#endif

questionAnswers(3)

yourAnswerToTheQuestion