iOS调试技巧——编译器预定义宏

      我们都知道,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

输出结果如下:

iOS调试技巧——编译器预定义宏_第1张图片


      总结,使用这些预定义宏可以快速的在需要的位置打印log,方便我们调试程序,这个也算是编码中的一个小技巧吧!



github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

最近极客学院Wiki正在进行IT职业技能图谱的制定,我主要负责iOS方向,大家感兴趣的可以一起参加,有问题或者修改可以直接给我发issues或者pull request。https://github.com/chenyufeng1991/skillmap  。


你可能感兴趣的:(ios,宏,编译器)