BWH*_*zel 8 objective-c c-preprocessor
我正在为Mac OS X和iOS编写一个类库,作为OS X的Cocoa Framework和iOS的静态库发布.为了简化问题,我打算在Xcode中使用多个目标.但是,Mac OS X上的类链接到Cocoa.h,而在iOS上它们链接到Foundation.h.
我的问题基本上是:
或者我可以在头文件中使用预处理器指令来控制框架包含,例如
#ifdef MacOSX
#import <Cocoa/Cocoa.h>
#else
#import <Foundation/Foundation.h>
#endif
Run Code Online (Sandbox Code Playgroud)det*_*zed 21
您可以使用它们来分离平台相关代码(请参阅参考资料TargetConditionals.h):
#ifdef TARGET_OS_IPHONE
// iOS
#elif defined TARGET_IPHONE_SIMULATOR
// iOS Simulator
#elif defined TARGET_OS_MAC
// Other kinds of Mac OS
#else
// Unsupported platform
#endif
Run Code Online (Sandbox Code Playgroud)
这是一张有用的图表.
小智 8
它就像一个魅力:
#ifdef __APPLE__
#include "TargetConditionals.h"
#if TARGET_IPHONE_SIMULATOR
// ios simulator
#elif TARGET_OS_IPHONE
// ios device
#elif TARGET_OS_MAC
// mac os
#else
// Unsupported platform
#endif
#endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7562 次 |
| 最近记录: |