Al03's blog

Use DLog

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_rectdebug_bool,打印CGRectBool信息。

使用DLog您不必担心发布时需要注释了,#ifdef DEBUG条件预处理已经帮你处理了,发布后在用到DLog的地方不会输出任何信息。