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.hSongInfo.hUserSession.hCloudFolder.hListBase.hImageManager.hImageDownloadTask.hDownLoadTask.hComHelper.h
经过这样九层 import 才最终展开到 ComHelper.h 的头文件
上述步骤都是固定的, 简单写个脚本就能快速定位.