iOS: #ifdef DEBUG
2016-07-19 17:35
337 查看
以前改了个Log语句,在debug模式下输出NSLog, 发布之后不输出, 但是一直没有验证, 今天突发奇想, 就写了个demo验证了下,在发布环境的确是不会执行的!!
代码如下:
运行结果在debug模式下输出:debug
在发布环境输出:adhoc
开发时,经常用到NSLog,但release是又想一次过清掉all NSLog,方法是:在xxx-Prefix.pch里添加
[cpp] view
plain copy
#ifdef DEBUG
# define DLog(...) NSLog(__VA_ARGS__)
#else
# define DLog(...) /* */
#endif
#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
plain copy
#ifdef DEBUG
NSString * const REG_URL=@"http://xxxx/reg_dev_token";
#else
NSString * const REG_URL=@"http://xxxx/reg_production_token";
#endif
代码如下:
- (IBAction)testDebug:(UIButton *)sender { NSString *message = @"DEBUG"; #ifdef DEBUG message = @"debug"; #else message = @"adhoc"; #endif UIAlertView *alert = [[UIAlertView alloc] initWithTitle:message message:nil delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil]; [alert show]; return; }
运行结果在debug模式下输出:debug
在发布环境输出:adhoc
开发时,经常用到NSLog,但release是又想一次过清掉all NSLog,方法是:在xxx-Prefix.pch里添加
[cpp] view
plain copy
#ifdef DEBUG
# define DLog(...) NSLog(__VA_ARGS__)
#else
# define DLog(...) /* */
#endif
#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
plain copy
#ifdef DEBUG
NSString * const REG_URL=@"http://xxxx/reg_dev_token";
#else
NSString * const REG_URL=@"http://xxxx/reg_production_token";
#endif
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用开发中AFNetworking库的常用HTTP操作方法小结
- iOS应用中UISearchDisplayController搜索效果的用法
- iOS App开发中的UISegmentedControl分段组件用法总结
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- iOS中UIAlertView警告框组件的使用教程
- iOS开发之路--微博“更多”页面
- 浅析iOS应用开发中线程间的通信与线程安全问题
- iOS中的UIKeyboard键盘视图使用方法小结
- 检测iOS设备是否越狱的方法