Iphone iOS:调试版本的可选代码片段

Iphone iOS:调试版本的可选代码片段,iphone,ios,debugging,release,building,Iphone,Ios,Debugging,Release,Building,对于我的应用程序,我希望有一个调试视图,我只希望在调试版本中,而不希望在调试版本中 发布版本。但我不想更改我的代码。这就是为什么我想知道我是否可以 如果这是一个发布版本,请检查一些编译器标志,并排除一些我只想删除的代码 用于调试生成。在项目生成设置中,查找预处理器定义部分,在该部分中,您可以仅在调试生成中定义变量,例如debug=1,然后在代码中使用该变量: #if DEBUG NSLog(@"This will only print in debug!"); #endif 只需确保在

对于我的应用程序,我希望有一个调试视图,我只希望在调试版本中,而不希望在调试版本中 发布版本。但我不想更改我的代码。这就是为什么我想知道我是否可以 如果这是一个发布版本,请检查一些编译器标志,并排除一些我只想删除的代码
用于调试生成。

在项目生成设置中,查找预处理器定义部分,在该部分中,您可以仅在调试生成中定义变量,例如
debug=1
,然后在代码中使用该变量:

#if DEBUG
    NSLog(@"This will only print in debug!");
#endif

只需确保在您的发布配置中,在构建设置的相同位置将相同的定义设置为0

检查您的项目构建设置以进行调试,以确保设置了“调试”-Apple免费为您提供此功能-通过选择项目并单击构建设置选项卡来执行此操作。搜索“DEBUG”并查看是否确实设置了DEBUG

然后在源文件中有条件地编写调试代码

#ifdef DEBUG

// Something to log your data here or even add a whole subview to see it on the device

#else

// 

#endif

除了Damo解释的构建设置外,还有一个我见过的使用过的、也有效的等效构建设置。在其他C标记(其他标记)中,将
-DDEBUG
添加到调试配置中。

\ifdef是另一个选项,但我更喜欢使用#if,而不是像我之前在评论中所说的那样,我更喜欢使用
\if
而不是
\ifdef
。使用哪一个完全取决于程序员,每一个都有各自的优点和缺点。我的首选方法是使用始终定义每个标志的方法,但使用0或1来指示该标志的状态,而不是试图确定该标志是否在项目中定义#ifdef将被视为真,即使预处理器中设置了DEBUG=0,出于这个原因,我认为使用μIFF是危险的,但是如果您将应用程序提交到Apple,并且忘记设置为Debug=0,这不是问题,因为正如您在上面的截图中看到的,在发布构建配置中,没有调试的定义;也就是说,没有DEBUG=1,就像DEBUG和TestFlight*构建配置一样。