我阅读了很多关于为这两个系统创建跨平台库的问题。每个答案都指向静态库作为解决方案。
我不想最终得到一个静态库,我想创建一个类,其中包含适用于 iOS 的方法和适用于 OS X 的对应方法。
-(void)createColor:(NSColor*);
-(void)createColor:(UIColor*);
我遇到的第一个问题是我找不到使用仅在特定系统中可用的类的方法。例如,我如何管理一个适用UIColor
于 iOS 和NSColor
OS X 的功能?
如果我为 iOS 创建一个项目,当我查看时我在标题列表中Foundation.h
找不到。NSColor.h
我想使用TARGET_OS_MAC
andTARGET_OS_IPHONE
定义来区分这两个系统......我走对了吗?
编辑以添加更多信息:
目前我有 2 个目标:iOSTestApp 和 OSxTestApp。对于这些目标,我根据系统包括了所需的框架。
仅当我选择 OSXTestApp 作为活动目标时才使用TARGET_OS_MAC
和工作。TARGET_OS_IPHONE
当我选择 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