NSLog
在OC中被大量用来打印我们需要输出的信息,只是有一点需要说明下,在发布时需要把所有的NSLog
注释掉,否者通过apple的一个调试软件可以看到输出的所有信息。试想,一个接口的数据逻辑全部打印了出来,岂不是会被别人利用去获取用户数据甚至攻击服务器。
但是我们有时也会忘记注释NSLog
,So DLog
来了。
#ifdef DEBUG
#define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
#define pwd printf("%s %d\n", __PRETTY_FUNCTION__, __LINE__);
#define debug_object( arg ) debug( @"Object: %@", arg );
#define debug_int( arg ) debug( @"integer: %i", arg );
#define debug_float( arg ) DLog( @"float: %f", arg );
#define debug_rect(arg) DLog( @"CGRect ( %f, %f, %f, %f)", arg.origin.x, arg.origin.y, arg.size.width, arg.size.height );
#define debug_point( arg ) debug( @"CGPoint ( %f, %f )", arg.x, arg.y );
#define debug_bool( arg ) debug( @"Boolean: %@", ( arg == YES ? @"YES" : @"NO" ) );
#else
#define DLog(...)
#endif
将上面的宏添加到工程projectName-Prefix.pch
内。
上面的DLog
的用法和NSLog
一样,还会输出函数名、行号。
这还提供了几个输出其他方便打印我们需要信息的宏方法,最方便的当然是debug_rect
、debug_bool
,打印CGRect
和Bool
信息。
使用DLog
您不必担心发布时需要注释了,#ifdef DEBUG
条件预处理已经帮你处理了,发布后在用到DLog
的地方不会输出任何信息。