Pro*_*ber 1 iphone objective-c conditional-compilation ipad ios
我已经在我的应用程序中添加了一些调试代码,我只想在需要时调用它.我记得有一些IFDEF可以用来有条件地将代码包含在源文件中.
例如,我可能有这样的事情:
IFDEF kDebugEnabled == YES {
// some debugging code here
}
Run Code Online (Sandbox Code Playgroud)
然后,如果kDebugEnabled为YES,则只将这段代码编译成二进制文件.
我怎么能这样做?
请注意:我不想使用项目编译器标志设置.我只是想定义一个BOOL(或者同样有用的东西),这是真或假,然后只需在我的App Delegate中轻松设置它.我发现很难导航到项目编译器设置,搜索标志然后设置它.我知道有一个可能有用的Debug标志.
你在寻找的是:
#ifdef __YOURSYMBOL__
<conditional code>
#endif
Run Code Online (Sandbox Code Playgroud)
您可以通过编程方式定义__YOURSYMBOL__如下:
#define __YOURSYMBOL__
Run Code Online (Sandbox Code Playgroud)
__YOURSYMBOL__ 可以是任何有意义的字符串,以便记住您为什么要包含/排除该代码段.
该DEBUG常数是一个特殊的预处理器常量,当代码被编译用于调试的编译器专为您定义,所以你可以简单地使用它:
#ifdef DEBUG
<conditional code>
#endif
Run Code Online (Sandbox Code Playgroud)
考虑到这是C预处理器,而不是C,也不是您正在使用的Objective-C,所以像kDebugEnabled == YES(其中kDebugEnabled是Objective-C变量)这样的测试根本不可能.您可以为常量定义整数值,如下所示:
#define __LOG_LEVEL__ 3
Run Code Online (Sandbox Code Playgroud)
然后测试它:
#if __LOG_LEVEL__ == 3
...
Endif
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
312 次 |
| 最近记录: |