检测iPhone是否在运行时运行调试/分发构建

时间:2010-04-02 16:36:01

标签: iphone

是否可能在运行时检测正在运行的应用程序是使用调试还是分发进行编译。

2 个答案:

答案 0 :(得分:13)

在项目信息中,对于调试配置,添加“DEBUG”的预处理器宏(在GCC 4.2 - 预处理部分中)。

在您的代码中,您可以使用#ifdef查看是否定义了DEBUG,如果您想要包含或不包含调试版本的代码。或者你甚至可以设置一个变量(我无法想象为什么你会想要这个):

#ifdef DEBUG
  BOOL isBuiltDebug = YES;
#else
  BOOL isBuiltDebug = NO;
#endif

编辑:那么,另一种方法是在预处理器宏中定义一个布尔值,即:调试配置为“DEBUG_BUILD = 1”,Release配置为“DEBUG_BUILD = 0”。然后,您可以在代码中使用该值:

if (DEBUG_BUILD) {
   ....
}

请注意不要使用可能与您的代码中或您可能包含的任何.h文件中的名称相匹配的宏名称,因为预处理器将替换它,找到这些类型真的很痛苦虫子。

答案 1 :(得分:4)

无需考虑定义自定义预处理器宏,您只需编写一个像这样的自定义方法:

+ (BOOL) isInDebugMode
{
    #ifndef __OPTIMIZE__   // Debug Mode
        return YES;
    #else
        return NO;
    #endif
}

或者只是在这些陈述中内联编写代码:

    #ifndef __OPTIMIZE__   // Debug Mode
       // Your debug mode code
    #else
        // Your release mode code
    #endif

编译器自动设置的__OPTIMIZE__预处理器设置,关于您的项目设置,因此您不必担心。

相关问题