有谁能告诉我NSLog
和DLog
之间有什么区别?
当我查看这个项目代码时,我发现了这个DLog:http://code.google.com/p/iphone-socks-proxy/
答案 0 :(得分:68)
DLog是一种常用的"调试NSLog"替代方案(只为谷歌)
以下是一套完整的Log #define指令(包括 ULog ,基于UIAlertView 的日志记录功能)
// DLog will output like NSLog only when the DEBUG variable is set
#ifdef DEBUG
# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#else
# define DLog(...)
#endif
// ALog will always output like NSLog
#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
// ULog will show the UIAlertView only when the DEBUG variable is set
#ifdef DEBUG
# define ULog(fmt, ...) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%s\n [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; }
#else
# define ULog(...)
#endif
将它们放在预编译头文件(.pch)中。
(来源:http://overbythere.co.uk/blog/2012/01/alternatives-nslog)
答案 1 :(得分:13)
DLog是一个宏,用于在调试和发布版本中条件化NSLog()
的行为。对于发布版本,它将不会打印。 NSLog()
用于将格式字符串打印到控制台。
以下是其参考定义:
#ifdef DEBUG
# define DLog(...) NSLog(__VA_ARGS__)
#else
# define DLog(...) /* */
#endif
#define ALog(...) NSLog(__VA_ARGS__)
答案 2 :(得分:9)
NSLog
是一个内置于Apple提供的Foundation框架中的函数。我从来没有听说过DLog
,所以我认为它是一个非标准函数,由您正在查看的代码实现。
答案 3 :(得分:8)
嗨, 在NSLOG替换文件格式的宏cmd下面以及下面我提到的undef Macro以及
<强>定义:强>
#define _LOG_TO_CONSOLE_ //#undef _LOG_TO_CONSOLE_
#ifdef _LOG_TO_CONSOLE_
#define DLog(format, ...) NSLog(format, ##__VA_ARGS__)
#else
#define DLog(format, ...)
#endif
答案 4 :(得分:0)
我认为NSLog和DLog之间的一个重要区别是NSLog滞后于程序的执行(想象一下忘记删除生产/发布中的所有NSLog调用),因此出于调试目的,应该使用DLog。