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

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

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

【问题讨论】:

标签: objective-c iphone swift


【解决方案1】:

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

【讨论】:

【解决方案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

【讨论】:

    猜你喜欢
    • 2014-12-15
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    相关资源
    最近更新 更多