【问题标题】:Xcode: stop lines of code / functions from compilingXcode:停止编译代码行/函数
【发布时间】:2019-03-13 10:27:01
【问题描述】:

我在几个项目中有公共文件,我需要停止为项目A编译一些行和函数,同时为项目B编译。

我知道我可以使用预处理器。但这对我来说并不方便。有什么方法可以阻止代码行在下面的条件下编译?

#if PhotosModuleSettings.type == .documents
... do not commpile
#endif

【问题讨论】:

  • 你需要解释一下预处理器在什么方面不方便。更重要的是,您需要解释您想象的PhotosModuleSettings.type == .documents 的含义。这些标识符是什么?它们是类、属性和枚举成员吗?它们是否引用了 Xcode 构建设置?还是什么?

标签: swift xcode preprocessor


【解决方案1】:

使用预处理器有什么不方便的地方?您可以在每个目标的构建设置中指定预处理器宏,也可以使用 .xcconfig 文件来指定它们。

不过,还有另一种简单的方法。将要有条件地编译的行和函数分隔到单独的文件中。也许通过使用 Swift 扩展或子类化或者只是单独的全局函数等等。然后只需选择您希望将这些文件添加为成员的目标和/或项目。

不过,根据您重构代码以进行这种文件分离的愿望,预处理器宏可能是更好的选择。

【讨论】:

    【解决方案2】:

    您将需要使用预处理器宏。

    为您的项目添加配置,并在预处理器宏中使用它。

    您可以根据构建配置在目标的预处理器宏部分中设置这些配置的值。

    这里有一个与同一概念相关的详细blog

    【讨论】:

      猜你喜欢
      • 2018-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      相关资源
      最近更新 更多