gpt4 book ai didi

ios - Swift:使用预处理器宏

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:00:40 25 4
gpt4 key购买 nike

我创建了一个与 Obj-C 代码库混合的 .swift 文件,我想知道设置依赖于特定目标的预处理标志的常量的最佳方法是什么。以下是我为每个目标设置常量的方法:

对于“目标 A”,在“build设置”下 -> “Swift 编译器 - 自定义标志” -> 展开“其他 Swift 标志”以显示以下内容

Debug: -DDEBUG -DTARGET_A

Release: - DPRODUCTION -DTARGET_A

对于“目标 B”,在“build设置”下 -> “Swift 编译器 - 自定义标志” -> 展开“其他 Swift 标志”

Debug: -DDEBUG -DTARGET_B

Release: - DPRODUCTION -DTARGET_B

NotificationsHub.swift

#if TARGET_A
#if PRODUCTION
let HUBNAME = "hub1"
let HUBLISTENACCESS = "Endpoint=endpoint1"
#elseif DEBUG
let HUBNAME = "hub2"
let HUBLISTENACCESS = "Endpoint=endpoint2"
#endif
#elseif TARGET_B
#if PRODUCTION
let HUBNAME = "hub3"
let HUBLISTENACCESS = "Endpoint=endpoint3"
#elseif DEBUG
let HUBNAME = "hub4"
let HUBLISTENACCESS = "Endpoint=endpoint4"
#endif
#endif

class NotificationsHub: NSObject
{
...
let hubName = HUBNAME
let hubListenAccess = HUBLISTENACCESS
...
}

我不喜欢类定义之前的巨大嵌套 if 语句,也不喜欢在类之外设置常量(这些是全局常量吗???)并且更愿意能够在中指定每个 hubName 和 hubListenAccess某处的项目设置。在 Obj-C 中,可以在“Build Settings”->“Apple LLVM 7.0 Preprocessing”->展开“Preprocessor Macros”下指定值,但不知道如何在 Swift 中执行此操作。

最佳答案

在 XCode 8 中,我们可以使用 Active Compilation Conditions 添加没有 -D 前缀的 MACRO

关于ios - Swift:使用预处理器宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37080565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com