我有一个 Objective-C 类别,我已经在 iOS 和 OSX 项目中使用了一段时间,我想按原样在 Swift 项目中使用它......直到我有时间将它翻译成 swift 。
这是我的类别的 .h 文件的顶部:
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#else
#import <Cocoa/Cocoa.h>
#endif
我已将它包含在桥接 header 中,但是当我为 iOS 构建项目时,我收到一条错误消息,提示找不到文件 Cocoa/Cocoa.h。
它为什么还要找它?即使在 Swift 项目中,条件编译是否仍然有效?它仍在编译 Objective-C 文件。
谢谢。
最佳答案
在您的源文件中添加#import "TargetConditionals.h"
。
#import "TargetConditionals.h"
#if TARGET_OS_IPHONE
#import <UIKit/UIKit.h>
#else
#import <Cocoa/Cocoa.h>
#endif
或者将“-DTARGET_OS_IPHONE”添加到目标构建选项的“其他 cflags”部分。
关于ios - Swift 项目中 Objective-C 的条件编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24664649/