繁体   English   中英

Xcode - 条件开发或生产模式

[英]Xcode - conditional development or production mode

在搜索这个我只能找到其他语言的信息。 我想知道编写条件语句的最佳实践,例如:

if (DEV_MODE){
    //do something
}else{
    //do the real stuff
}

然后在某个全局文件中打开或关闭DEV_MODE,因此我只需将其更改为打开或关闭,而不是在多个位置更改代码。 我有一些想法,但我正在寻找最佳方法的建议。

尝试这个:

#ifdef DEBUG
  // do stuff
#endif

当前版本的Xcode会自动在新项目中设置此宏。 转到您的项目构建设置以确保。 如果它不在那里你必须自己添加:

在此输入图像描述

(这个问题与Xcode无关。

也就是说,您可以使用预处理程序指令过滤掉调试和发布模式,而不是使用C风格的IF污染您的代码。 据我所知,如果处于测试模式,将DEBUG宏定义为1是一种常见做法,如果处于释放模式则不定义它。 (另外,Xcode可能会为你定义这个,我已经看到这个行为已经被依赖了。)原因是预处理器的使用更具可读性,因为它没有进入缩进,它更好地与代码视觉化。 总结一下,试试吧

#ifdef DEBUG
    // do debug stuff here
#else
    // do release stuff here
#endif

预处理器宏的另一个参数是,您可以条件化全局命名空间,而这在C代码中是不可能的。 例如,使用预处理器宏,您可以编写

#ifdef DEBUG
    int functionOne()
    {
    }
#else
    char *functionTwo(int a)
    {
    }
#endif

没有预处理器你就无法做到这一点。

预处理器变量是您想要的,在构建配置中定义变量(例如DEV_MODE ),然后使用预处理器检查,如:

#if DEV_MODE
    //dev mode code
#else
    //non-dev mode code
#endif

在项目设置中有一个名为“预处理器宏”的部分。 在该部分中,您可以为Debug构建添加一个字符串,例如“DEV_MODE”或任何您想要的字符串。 然后,您可以执行上面列出的条件,当您的应用为“发布”或任何其他不包含宏的设置构建时,您的检查将失败。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM