#ifdef下的Objective-C代码在Swift中不可见

时间:2016-03-23 09:37:26

标签: objective-c iphone swift

我在Objective-C项目中添加了一些swift类。 问题是在Objective-C类中#ifdef下的代码在Swift类中是不可见的。我已经定义了一些静态属性来反映#defines,但是对整个项目进行手动操作是非常大的开销。有没有更容易和正确的方法呢?

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

2 个答案:

答案 0 :(得分:1)

为什么不定义包含const的类,而不是使用#defines,那么你可以用几行来切换不同编译的对象引用。

答案 1 :(得分:0)

Xcode 8引入了新的构建设置:有效编译条件

新设置: 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