NSLog和DLog的使用方法

在开发过程当中,往往会输出一些内容来debug程序,也就是日志。可以使用NSLog或者替代品Dlog

  • NSLog的使用方法
   在Objective-C中,NSLog相当于C语言中的printf,常用于文字输出。
  NSLog定义在NSObjCRuntime.h中,如下所示:
  void NSLog(NSString *format, …);
     基本上,NSLog很像printf,同样会在console中输出显示结果。不同的是,传递进去的格式化字符  是NSString的对象,
而不是char *这种字符串指针。
  NSLog可以如下面的方法使用:
  NSLog (@"this is a test");
  NSLog (@"string is :%@", string);
  NSLog (@"x=%d, y=%d", 10, 20);
  但是下面的写法是不行的:
  int i = 12345;
  NSLog( @"%@", i );
  原因是, %@需要显示对象,而int i明显不是一个对象,要想正确显示,要写成:
  int i = 12345;
  NSLog( @"%d", i );
  NSLog的格式如下所示:
  %@ 对象
  %d, %i 整数%u 无符整形%f 浮点/双字%x, %X 二进制整数%o 八进制整数%zu size_t%p 指针%e 浮点/双字 (科学计算)%g 浮点/双字 %s C 字符串%.*s Pascal字符串%c 字符%C unichar%lld 64位长整数(long long)%llu 无符64位长整数%Lf 64位双字
  • DLog 的使用
 系统的NSLog虽然好用,但如果输出过多时会让你头痛,你根本不知道是在程序的哪儿输出的。于是我们有必要输出更多的信息来标识。下面是一个宏,大家可以参考。
    // DLog is almost a drop-in replacement for NSLog 
    // DLog(); 
    // DLog(@"here"); 
    // DLog(@"value: %d", x); 
    // Unfortunately this doesn't work DLog(aStringVariable); you have to do this instead DLog(@"%@", aStringVariable); 

    #ifdef DEBUG 
    #define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 
    #else 
    #define DLog(...) 
    #endif 
    // ALog always displays output regardless of the DEBUG setting 
    #define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); 

  用DLog代替NSLog,在Debug模式下就会输出信息,包括方法名,行数及你想要输出的内容。ALog无论在Debug还是在Release模式下都会输出。

你可能感兴趣的:(NSLog和DLog的使用方法)