ios - Swift 项目中 Objective-C 的条件编译

标签 ios objective-c cocoa swift

我有一个 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/

相关文章:

objective-c - cocoa 还是 Objective-C?

objective-c - 如何在 NSCollectionView 中正确显示当前选择?

ios - 代号一 - 自定义 TextField

iOS NSURLSessionUploadTask 响应数据

objective-c - 调用 RCTDirectEventBlock 不会触发 JS 代码

ios - OCMClassMock 和 OCMStrictClassMock

objective-c - 同步操作(例如 stringFromURL)是否会被其他线程抢占?

ios - 外部页面转换不起作用 - "data-ajax=false"

ios - swift 和 firebase 中整数不加 1

ios - TextEdit 字段输入在 iOS10 上挂起