#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 中不可见 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
IOS / Objective-C:以编程方式在按钮下的中心线
Objective-C中,ARC下的 strong和weak指针原理解释
如何检测按下的按钮并将其显示在另一个视图上? Objective-C