iOS如何搞定各种打印

基础打印
  NSLog(@"打印字符串:%@",name);

  NSLog(@"打印整形:%i",number);//或者 %li ; %ld ; %d

  NSLog(@"打印字符:%c",c);

  NSLog(@"打印单浮点数:%f",f);

  NSLog(@"打印精度浮点数:%.2f",f);

  NSLog(@"BOOL--b-->%@",isYES?@"YES":@"NO");//打印布尔类型

  NSLog(@"%02ld",number);必须是两位的名字
C/C++/Objective-C中用于日志输出的预处理宏.
Macro Format Specifier Description
__func__ %s 当前函数前面
__LINE__ %d 源码文件中的行号
__FILE__ %s 源码文件完整路径
__PRETTY_FUNCTION__ %s __func__类似, 但是在 C++ 代码中包含更多的信息.
Macro Format Specifier Description
NSStringFromSelector(_cmd) %@ 当前选择器的名字
NSStringFromClass([self class]) %@ 当前对象类的名字
[[NSString stringWithUTF8String:__FILE__] lastPathComponent] %@ 源码文件的名称
[NSThread callStackSymbols] %@ 当前栈信息的刻度字符串数组。仅用于调试,不用向终端用户展示或者在代码中用作任何逻辑。
2018-12-29 10:23:43.203781+0800 categoryDemo[17849:7074885] +[Person load],13
2018-12-29 10:25:03.438717+0800 categoryDemo[17953:7081199] +[Person load],13

在Xcode中 :
   _cmd会返回一个SEL对象,而剩下的都是来自C/C++编译器的定义所以都会返回一个C的字符串,显示结果也都差不多,可能不同编译器会有小小的差别。
显然后面func系列要比_cmd好用,相对Objective-C类型内的方法调用,他不仅会显示方法名,还会显示类型,配合LINE,可以精确定位出Log在代码中的位置。
《iOS/Cocoa: 使用代码定位性更高的Log》
《iOS各种调试技巧豪华套餐》

你可能感兴趣的:(iOS如何搞定各种打印)