I read a lot of questions about creating a cross-platform library for these 2 systems. Every answer points to static library as the solution.
I don't want to end up with a static library, I'd like to create a class with methods for iOS and their counterpart for OS X.
-(void)createColor:(NSColor*);
-(void)createColor:(UIColor*);
The first problem that I have is that I can't find a way to use classes that are available only in a specific system. So for example, how could I manage a function that works with UIColor
in iOS and with NSColor
in OS X?
If I create a project for iOS, when I look into Foundation.h
I can't find NSColor.h
in the headers list.
I thought to use the TARGET_OS_MAC
and TARGET_OS_IPHONE
definitions to make a distinction between the two systems... I'm on the right way?
EDIT to add more info:
At the moment I have 2 targets: an iOSTestApp and OSxTestApp. For these targets I have included the needed frameworks depending on the system.
Using TARGET_OS_MAC
and TARGET_OS_IPHONE
works only when I select the OSXTestApp as active target. When I select the iOSAppTest, Xcode returns errors for OS X data type (i.e. NSColor
)
Here an example of the code that produces these errors:
#if TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#elif TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#endif
While if I invert the definitions it works ... Here an example of the code that produces these errors:
#if TARGET_OS_IPHONE
-(void)createColor:(UIColor*)color;
#elif TARGET_OS_MAC
-(void)createColor:(NSColor*)color;
#endif
.a
), a dynamic library (.dylib
,.so
) and a framework (.framework
). – Delwin"Here an example of the code that produces these errors:"
from that line? – Dumond