预处理器指令可以用于为 Mac 和 iOS 导入不同的头文件吗?
我正在为 Mac OS X 和 iOS 编写一个类库,并将作为 OS X 的 Cocoa 框架和 iOS 的静态库发布。为了简化问题,我打算在 Xcode 中使用多个目标。然而,Mac OS X 上的类链接到 Cocoa.h,而在 iOS 上,它们链接到 Foundation.h。
我的问题基本上是:
- Mac OS X 框架可以链接到 Foundation.framework 吗?框架内使用的类是 NSString、NSMutableString 和 NSMutableArray。
或者我可以在头文件中使用预处理器指令来控制框架包含,例如
<前><代码>#ifdef MacOSX #import#别的 #import ; #endif
I am writing a class library for Mac OS X and iOS to be released as a Cocoa Framework for OS X and a Static Library for iOS. To simplify matters, I intend to use multiple targets in Xcode. However, the classes on Mac OS X link against Cocoa.h whereas on iOS they link against Foundation.h.
My questions basically are:
- Could the Mac OS X framework link against Foundation.framework instead? Classes used within the framework are NSString, NSMutableString, and NSMutableArray.
Or could I use preprocessor directives within the header files to control framework inclusion, e.g.
#ifdef MacOSX #import <Cocoa/Cocoa.h> #else #import <Foundation/Foundation.h> #endif
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用它们来分离平台相关代码(请参阅
TargetConditionals.h
):这是一个 有用的图表。
You can use these to separate platform dependent code (see
TargetConditionals.h
):Here's a useful chart.
它的作用就像一个魅力:
It works like a charm:
尝试一下看看。如果编译失败则不行。如果成功的话,是的。
是的,可以。事实上,我相信这是实现这一目标的唯一方法。
Try it and see. If the compile fails, no. If it succeeds, yes.
Yes, you can. In fact, I believe that is the only way to do that.
这对我来说非常有效:
This works perfectly for me: