我在Objective-C项目中添加了一些swift类。 问题是在Objective-C类中#ifdef下的代码在Swift类中是不可见的。我已经定义了一些静态属性来反映#defines,但是对整个项目进行手动操作是非常大的开销。有没有更容易和正确的方法呢?
注意:问题不在于如何在swift中执行...这是关于如何处理objective-c中已存在的定义以使它们在swift中可见。
答案 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