在Xcode 10

时间:2019-06-17 04:52:35

标签: ios swift xcode

我正在尝试将PR处理器宏添加到我的Xcode项目中。该项目共享Swift代码和Objective-C代码,因此我不能使用Swift Compiler -> Other Swift Flags,因为那样我就无法从Objective-C代码中读取它们。

我的应用程序的主要目标和项目中都设置了以下内容:

enter image description here

然后,在我应用的第二个目标(即今日扩展)下,我将IS_MAIN = 0设置为

enter image description here

但是,当我运行此代码时:

#if IS_MAIN
    print("main: true")
#else
    print("main: false")
#endif

它永远不会打印出正确的照片。

如何添加此预处理器标志,以便我的Swift和Objective-c文件都尊重它?现在,这两种类型都不起作用。

3 个答案:

答案 0 :(得分:2)

您需要设置swift自定义标志以快速访问宏观宏处理器。

如果您不想为多种架构设置预处理器宏,则可以像这样使用。 enter image description here

例如,在这里,我的调试方案中具有GEO = 1,其值为1。

要在Objective C中访问是没有问题的,但是要快速访问,您需要将它公开在其他这样的标志中。

根据您的情况,您需要在自定义标志中添加-DIS_MAIN。

希望对您有帮助!

enter image description here

答案 1 :(得分:1)

Active Compilation Conditions下添加为

enter image description here

答案 2 :(得分:1)

有两种方法可以实现您想要的。阅读this文章以了解有关预处理器和Swift的更多信息。

基本上,在Xcode 8之前,您必须在Other Swift Flags的{​​{1}}中添加所需的标志。像这样添加它。注意“-D”选项

enter image description here

在Xcode 8之后,Apple添加了另一个名为Build settings的设置,您可以在其中添加预处理器宏而无需使用“ -D”选项,而swift能够识别它。 / p>

  

在两种情况下,都不会添加值Active Compilation Conditions。您仅在一种配置中提及该标志,而在另一种配置中不提及该标志,那么您的=1条件将起作用