我正在尝试将PR处理器宏添加到我的Xcode项目中。该项目共享Swift代码和Objective-C代码,因此我不能使用Swift Compiler -> Other Swift Flags
,因为那样我就无法从Objective-C代码中读取它们。
我的应用程序的主要目标和项目中都设置了以下内容:
然后,在我应用的第二个目标(即今日扩展)下,我将IS_MAIN = 0设置为
。但是,当我运行此代码时:
#if IS_MAIN
print("main: true")
#else
print("main: false")
#endif
它永远不会打印出正确的照片。
如何添加此预处理器标志,以便我的Swift和Objective-c文件都尊重它?现在,这两种类型都不起作用。
答案 0 :(得分:2)
您需要设置swift自定义标志以快速访问宏观宏处理器。
例如,在这里,我的调试方案中具有GEO = 1,其值为1。
要在Objective C中访问是没有问题的,但是要快速访问,您需要将它公开在其他这样的标志中。
根据您的情况,您需要在自定义标志中添加-DIS_MAIN。
希望对您有帮助!
答案 1 :(得分:1)
答案 2 :(得分:1)
有两种方法可以实现您想要的。阅读this文章以了解有关预处理器和Swift的更多信息。
基本上,在Xcode 8之前,您必须在Other Swift Flags
的{{1}}中添加所需的标志。像这样添加它。注意“-D”选项
在Xcode 8之后,Apple添加了另一个名为Build settings
的设置,您可以在其中添加预处理器宏而无需使用“ -D”选项,而swift能够识别它。 / p>
在两种情况下,都不会添加值
Active Compilation Conditions
。您仅在一种配置中提及该标志,而在另一种配置中不提及该标志,那么您的=1
条件将起作用