#ifdef 下的 Objective-C 代码在 Swift 中不可见 [重复]

Posted

技术标签:

【中文标题】#ifdef 下的 Objective-C 代码在 Swift 中不可见 [重复]【英文标题】:Objective-C code under #ifdef not visible in Swift [duplicate] 【发布时间】:2016-07-10 12:35:18 【问题描述】:

我正在向 Objective-C 项目添加一些 swift 类。 问题是 Objective-C 类中#ifdef 下的代码在 Swift 类中不可见。我已经定义了一些静态属性来反映#defines,但是检查整个项目并手动执行它是非常大的开销。有没有更简单更正确的方法来做到这一点?

注意:问题不在于如何在 swift 中执行...这是关于如何处理 Objective-c 中已经存在的定义以使它们在 swift 中可见。

【问题讨论】:

***.com/questions/24003291/…通过上面的链接,可能会有帮助 【参考方案1】:

您为什么不定义一个包含 const 的类,而不是使用#defines,然后您可以用几行代码在不同编译的对象引用之间切换。

【讨论】:

我已经有这样的Objective-C项目。现在我需要找出让 Swift 类在 #ifdefs 下查看代码的最简单方法 见:***.com/questions/24003291/…【参考方案2】:

Xcode 8 引入了一个新的构建设置:Active Compilation Conditions

新设置:SWIFT_ACTIVE_COMPILATION_CONDITIONS

“Active Compilation Conditions” is a new build setting for passing conditional compilation flags to the Swift compiler.

以前,我们必须在 OTHER_SWIFT_FLAGS 下声明条件编译标志,记得在设置前加上“-D”。例如,使用 MYFLAG 值有条件地编译:

#if MYFLAG
// do stuff
#endif

要添加到设置 -DMYFLAG 的值

现在我们只需要将值 MYFLAG 传递给新设置。是时候移动所有这些条件编译值了!

请参考我在另一个 SO 帖子中的回答:#ifdef replacement in the Swift language

【讨论】:

以上是关于#ifdef 下的 Objective-C 代码在 Swift 中不可见 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C关于非ARC模式下的对象引用计数

IOS / Objective-C:以编程方式在按钮下的中心线

Objective-C中,ARC下的 strong和weak指针原理解释

如何检测按下的按钮并将其显示在另一个视图上? Objective-C

如何在 ARC 下的 Objective-C 上零弱引用为零时得到通知?

#ifdef __cplusplus