【发布时间】:2012-08-21 09:46:06
【问题描述】:
我有一个同时具有 iOS 和 OS X 目标的项目。当我为 OS X 编译时,是否有一个正确的预处理器宏?我试过这个:
#if TARGET_OS_MAC
@interface BFNode : NSObject <NSPasteboardReading, NSPasteboardWriting> {
#else
@interface BFNode : NSObject {
#endif
但是TARGET_OS_MAC 似乎不起作用。当我尝试在 iOS 上运行该应用程序时,我得到一个编译器错误,因为它尝试编译第一行并且 iOS 上没有定义 NSPasteboardReading 协议。
我知道还有TARGET_OS_IPHONE。如果我使用它并交换 @interface 声明,它就可以工作。
但是有很多地方我有代码,没有 iOS 版本,所以我也需要一个用于 OS X 的宏。
解决方案:
我最终在 .pch 文件中定义了一个新宏:
#define TARGET_OSX TARGET_OS_IPHONE == 0
【问题讨论】:
标签: objective-c ios xcode macos cocoa