Objective-C 头文件展开
在 Objective-C 中, 头文件展开是在预处理阶段处理的, 如果项目头文件过多以及头文件写法不规范, 经常产生各种问题, 比如想找某个头文件是在哪里被导入的, 搜索代码基本搞不定, 比如我想找 ComHelper.h
是在哪里被引入的, 需要先展开头文件
1 | 通过 XCode 菜单栏的 Product 选项,依次点击Perform Action 、Preprocess “XXX.m” |
先搜索第一个 ComHelper.h
1 | # 12 "/Path/To/Proj/.../DownLoadTask.h" 2 |
说明是被 DownLoadTask.h
引进来的, 继续找第一个 DownLoadTask.h
找到如下
1 | #pragma clang module import Foundation /* clang -E: implicit import for #import <Foundation/Foundation.h> */ |
继续找第一个 ImageDownloadTask.h
省略后续…. 依次找到 ImageManager.h
ListBase.h
CloudFolder.h
UserSession.h
SongInfo.h
StatInfo.h
即引用顺序是
StatInfo.h
SongInfo.h
UserSession.h
CloudFolder.h
ListBase.h
ImageManager.h
ImageDownloadTask.h
DownLoadTask.h
ComHelper.h
经过这样九层 import 才最终展开到 ComHelper.h
的头文件
上述步骤都是固定的, 简单写个脚本就能快速定位.