6

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

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

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

4

4 回答 4

15

尝试这个:

#ifdef DEBUG
  // do stuff
#endif

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

在此处输入图像描述

于 2012-09-17T17:38:31.823 回答
8

(这个问题与 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

如果没有预处理器,您将无法做到这一点。

于 2012-09-17T17:38:59.653 回答
1

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

#if DEV_MODE
    //dev mode code
#else
    //non-dev mode code
#endif
于 2012-09-17T17:37:50.417 回答
0

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

于 2012-09-17T17:37:34.490 回答