基础打印
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各种调试技巧豪华套餐》
网友评论