iOS--- 不一样的NSLog打印

首先我们了解一下C/C++/Objective-C语言提供的宏
iOS— 不一样的NSLog打印

C/C++/Objective-C用于日志输出的预处理宏

MacroFormat SpecifierDescription
func%S当前函数
LINE%d源文件中的行号
FILE%s源码文件完整路径
PRETTY_FUNCTION%Sfunc类似,但是在C++代码中包含更多的信息

Objective-C中用于日志输出的表达式

ExpressionFormatDescription
NSStringFromSelector(_cmd)%@当前选择器的名字
NSStringFromClass([self class])%@当前类对象的名字
[[NSString stringWithUTF8String:FILE] lastPathComponent]%@源码文件的名称
[NSThread callStackSymbols]%@当前栈信心的刻度字符串信息,仅仅用于调试

打印当前函数无非就是cmd,func,FUNCTION,__PRETTY_FUNCTION

例子1:打印当前的函数名,以及当前代码所在文件中的行数

 NSLog(@"%s, %d", __FUNCTION__, __LINE__);//直接定位到debug的函数名,以及当前代码所在文件中得行数。

在- (void)viewDidLoad中输入以下代码:
 这里写图片描述

打印结果如下:
这里写图片描述

例子2:打印当前的函数名, NSStringFromSelector 获得参数的选择器所代表的方法的字符串

NSLog(@”%@”, NSStringFromSelector(_cmd));

这里写图片描述

例子3:打印当前源代码文件全路径

NSLog(@”%s”, _ _ FILE_ _ );

打印结果如下:
这里写图片描述

例子4:使用_ _ PRETTY_FUNCTION _ _

上面介绍过:像 func,但是包含了C++代码中的隐形类型信息。

打印结果:
这里写图片描述

在Xcode中:

显然后面func系列要比_cmd好用,相对Objective-C类型内的方法调用,他不仅会显示方法名,还会显示类型,配合LINE,可以精确定位出Log在代码中的位置。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值