【发布时间】:2013-02-25 17:11:04
【问题描述】:
我阅读了很多关于为这两个系统创建跨平台库的问题。每个答案都指向静态库作为解决方案。
我不想最终得到一个静态库,我想创建一个类,其中包含适用于 iOS 的方法以及适用于 OS X 的对应方法。
-(void)createColor:(NSColor*);
-(void)createColor:(UIColor*);
我遇到的第一个问题是我找不到使用仅在特定系统中可用的类的方法。例如,我如何管理一个在 iOS 中与 UIColor 和在 OS X 中与 NSColor 一起使用的函数?
如果我为 iOS 创建一个项目,当我查看 Foundation.h 时,我在标题列表中找不到 NSColor.h。
我想使用TARGET_OS_MAC 和TARGET_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
【问题讨论】:
-
回答说你需要一个用于 IOS 的静态库——我不明白你的其余问题
-
我无法理解否决票。反正我不想创建动态库...如果我告诉你我想创建一个 Helper Class 多平台听起来更好吗?
-
因为我真的不清楚这个问题,而且你的评论没有帮助:D 标题是“创建非静态库”,而你说“我不想要动态库”:D
-
您是否考虑过使用 CGColor 来代替?如果您只是编写类似的方法,那么为每个目标编写和维护单独的文件可能会更容易。
-
@PaulArmstrong 没有帮助 ^^ 无论如何这只是一个例子!
标签: ios objective-c macos cocoa-touch cocoa