iOS: #ifdef DEBUG

开发时,经常用到NSLog,但release是又想一次过清掉all NSLog,方法是:在xxx-Prefix.pch里添加

[cpp] view plaincopy

  1. #ifdef DEBUG
  2. #    define DLog(...) NSLog(__VA_ARGS__)
  3. #else
  4. #    define DLog(...) /* */
  5. #endif
  6. #define ALog(...) NSLog(__VA_ARGS__)

When you want to log only in debug builds use DLog(). In release builds DLog() will be compiled as an empty comment. Otherwise use ALog() for logging in both debug and release builds. (A as in always.)

那么"DEBUG"在哪里定义的呢? 在 "Target > Build Settings > Preprocessor Macros > Debug" 里有一个"DEBUG=1"。

当你Run, Test, Analyze时,就属于debug mode,当Profile, Archive时就属于release mode。见你的ios project的"Edit Scheme..."

#ifdef DEBUG的另外一个用处是:用于push notification。sandbox device token and production device token一定不能mix在一起,否则就可能有些device收不到。见http://blog.csdn.net/totogogo/article/details/8035095

因此我们需要为reg device token准备2个url

[cpp] view plaincopy

    1. #ifdef DEBUG
    2. NSString * const [email protected]"http://xxxx/reg_dev_token";
    3. #else
    4. NSString * const [email protected]"http://xxxx/reg_production_token";
    5. #endif

iOS: #ifdef DEBUG

时间: 2024-10-24 20:05:11

iOS: #ifdef DEBUG的相关文章

iOS中的#ifdef DEBUG为什么会在didFinishLaunchingWithOptions之前执行

#ifdef DEBUG ...程序段1... #else ...程序段2... #endif 这表明如果标识符DEBUG已被#define命令定义过则对程序段1进行编译:否则对程序段2进行编译.#ifdef 的意思是 if define(如果已经#define过).同理#ifndef的意思就是if not define(如果没有#define),与#ifdef意思相反. 而DEBUG是在哪里定义的呢? 在 "Target > Build Settings > Preprocesso

iOS中debug调试输出日志

在.pch中写: #ifdef DEBUG  // 调试阶段 #define CXSLog(...) NSLog(__VA_ARGS__) #else // 发布阶段 #define CXSLog (...) #endif iOS中debug调试输出日志,布布扣,bubuko.com

ios中DEBUG中记住用户名和密码

- (void)viewDidLoad { [super viewDidLoad]; #ifdef DEBUG // 设置测试使用的用户名和密码 self.nameText.text = @“xiaoshuai"; self.pwdText.text = @"123"; [self textChanged]; #endif } ios中DEBUG中记住用户名和密码,布布扣,bubuko.com

IOS #ifdef 的那些事儿

格式有点乱,整了几次都整不过来,大家将就一下吧. 这篇文章是本人(本人是菜鸟)在第一次接触上线项目时遇到的一个让我记忆深刻的问题. 如果你是大神,那么请绕过,这只是很肤浅的知识点,写给自己也分享给大家. 相信大家对于下面的语句一定不陌生. #ifdef (1) (2) #else (3) #endif 但是我在这里还是稍微解释一下吧(显得专业),如果在这个式子之前有#define(1)的话执行(2)否则执行(3) 如果只是这一点的话那么就对不起各位观众了.下面就要说我遇到的问题了, 我最近接触的

ios autolayout debug调试技巧

这篇文章并没有具体介绍自动布局的一些基本概念,主要讲解了一些高级的调试技巧. 这篇文章不是用来介绍Auto Layout的.如果你还没用过它,那还是先去WWDC 2012看看基础教程吧(1,2,3). 如果我们在iOS中遇到不可满足的约束条件,我们只能在输出的日志中看到视图的内存地址.尤其是在更复杂的布局中,有时很难辨别出视图的哪一部分出了问题.然而,在这种情况下,还有几种方法可以帮到我们. 首先,当你在不可满足的约束条件错误信息中看到NSLayoutResizingMaskConstraint

iOS开发debug跟release版本NSLog屏蔽方法

简单介绍以下几个宏: 1) __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持).宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉,否则会编译出错. 2) __FILE__ 宏在预编译时会替换成当前的源文件名 3) __LINE__宏在预编译时会替换成当前的行号 4) __FUNCTION__宏在预编译时会替换成当前的函数名称 1. 在***-Prefix.pch里

Xcode #ifdef DEBUG没执行的处理

今天在.pch文件中写了以下一行代码,帮助我定位到输出的行号,结果没出作用,记录一下: 1 #ifdef DEBUG 2 #define SLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 3 #else 4 #define SLog(...) 5 #endif 但是使用的时候根本没有执行到#ifdef DEBUG这里,经常网上找的答案,最后解决.解决过程

iOS web remote debug 正确的姿势

在使用iOS Remote debug需要做以下准备 1. iOS devices 开启java script and web inspector 开启方式如下: 2. mac OS 自带的Safari开启develop 模式 开启方法如下: 如何使用iOS remote debug?

Cisco IOS debug command reference

Command A through D debug aaa accounting through debug auto-config debug aaa accounting : to display information on accountable events as they occur(in privileged EXEC mode) no debug aaa accounting : to disable debugging output debug aaa authenticati