我们都知道,Objective-C是C语言的超集,必然保留了C语言的一些特性。今天我们就利用这些编译器预定义的宏来输出一些信息,以达到调试程序的目的。
这些宏包括:
(1)__FUNCTION__ ://获取当前方法名;
(2)__func__ ://获取当前方法名;
(3)__PRETTY_FUNCTION__ ://获取当前方法名;
(4)__LINE__ ://获取当前所在行;
(5)__FILE__ ://获取该文件的绝对路径;
(6)__DATE__ ://获取当前日期;
(7)__TIME__ ://获取当前时分秒;
(8)__TIMESTAMP__ ://获取当前时间戳;
示例代码如下:
#import "SecondViewController.h" @interface SecondViewController () @end @implementation SecondViewController - (void)viewDidLoad { [super viewDidLoad]; //获取类名(文件名); NSString *className = NSStringFromClass([self class]); NSLog(@"类名--------%@",className); //获取当前方法名; NSLog(@"%s",__FUNCTION__); //获取当前方法名; NSLog(@"%s",__func__); //获取当前方法名; NSLog(@"%s",__PRETTY_FUNCTION__); //获取当前所在行; NSLog(@"%d",__LINE__); //获取该文件的绝对路径; NSLog(@"%s",__FILE__); //获取当前日期; NSLog(@"%s",__DATE__); //获取当前时分秒; NSLog(@"%s",__TIME__); //获取当前时间戳; NSLog(@"%s",__TIMESTAMP__); } @end
总结,使用这些预定义宏可以快速的在需要的位置打印log,方便我们调试程序,这个也算是编码中的一个小技巧吧!
github主页:https://github.com/chenyufeng1991 。欢迎大家访问!
最近极客学院Wiki正在进行IT职业技能图谱的制定,我主要负责iOS方向,大家感兴趣的可以一起参加,有问题或者修改可以直接给我发issues或者pull request。https://github.com/chenyufeng1991/skillmap 。