Header Search Path
在Xcode Build System设置中,有Header Search Path、System Header Search Path、User Header Search Path这几种方式,区别在于:
- System Header Search Path :针对系统头文件的设置,通常代指 <> 方式引入的文件
- User Header Search Path :针对非系统头文件的设置,通常代指 "" 方式引入的文件
- Header Search Path :并不会有任何限制,两种方式都可以,CocoaPods使用的这种方式
Header Maps
上述三种方式是基本的文件引用方式,一个项目那么多文件,用这些引用路径遍历查找肯定是很低效的,所以Xcode会优先使用Header Map来提高头文件索引速度。
当我们开启 Build Setting 中的 Use Header Map 选项后,会自动生成的一份头文件名和头文件路径的映射表,而这个映射表就是 hmap 文件,不过它是一种二进制格式的文件,也有人叫它为 Header Map。
Framework Search Path
还有一种头文件搜索机制,它是基于 Framework 这种文件结构进行的。
当拖入一个.framework文件进入工程,自动会在Framework Search Path配置上该文件路径。
这里着重讲一下Framework打包时,Public、Private、Project的区别:
- Public:公开在framework里面Headers文件夹下
- Private:不公开,不建议使用,但是会打包到Target里面,可以通过
#import <MyPod/PrivateClass.h>
来引用 - Project:不打包入Target,不能引用,真正意义上的私有
参考文献
https://blog.csdn.net/MeituanTech/article/details/114109300?spm=1001.2014.3001.5502