Я прочитал много вопросов о создании кросс-платформенной библиотеки для этих двух систем. Каждый ответ указывает на статическую библиотеку в качестве решения.
Я не хочу ставить статическую библиотеку, мне бы хотелось создать класс с методами для iOS и их аналогов для OS X.
-(void)createColor:(NSColor*);
-(void)createColor:(UIColor*);
Первая проблема, с которой я столкнулась, заключается в том, что я не могу найти способ использовать классы, доступные только в конкретной системе. Например, как я могу управлять функцией, которая работает с UIColor
в iOS и с NSColor
в OS X?
Если я создаю проект для iOS, когда я смотрю в Foundation.h
, я не могу найти NSColor.h
в списке заголовков.
Я думал использовать определения TARGET_OS_MAC
и TARGET_OS_IPHONE
, чтобы провести различие между двумя системами... Я на правильном пути?
РЕДАКТИРОВАТЬ, чтобы добавить дополнительную информацию:
В настоящий момент у меня есть 2 цели: iOSTestApp и OSxTestApp. Для этих целей я включил необходимые рамки в зависимости от системы.
Использование TARGET_OS_MAC
и TARGET_OS_IPHONE
работает только при выборе OSXTestApp в качестве активной цели. Когда я выбираю iOSAppTest, Xcode возвращает ошибки для типа данных OS X (т.е. NSColor
)
Вот пример кода, который производит эти ошибки:
#if TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#elif TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#endif
Пока я инвертирую определения, он работает... Вот пример кода, который производит эти ошибки:
#if TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#elif TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#endif