前语:在我们写Swift的项目中,经常会用CocoaPods引进一些Objective-C的第三方库。但是Objective-C并不能直接导入。故这篇博客诞生了。


问题:这些第三方库的头文件并不能直接引证导入,如何处理?
计划:使用Objective-C桥接头文件(Objective-C Bridging Header)
  • 第一步,请求一个.h文件。 注意命名规则为TargetName-Bridging-Header

iOS 如何在Swift项目中导入OC头文件?

  • 第二步,挑选 Targets -> Build Settings -> 挑选all并搜索header。

iOS 如何在Swift项目中导入OC头文件?

  • 第三步,填写桥接头文件(Objective-C Bridging Header)的相对路径。

iOS 如何在Swift项目中导入OC头文件?

  • 第四步,将需求导入的第三方库头文件。(这里以高德地图SDK举例)
#ifndef Qi_MAMapDemo_Bridging_Header_h
#define Qi_MAMapDemo_Bridging_Header_h
#import <MAMapKit/MAMapKit.h>
#import <AMapFoundationKit/AMapFoundationKit.h>
#endif /* Qi_MAMapDemo_Bridging_Header_h */
  • 完成,现在已经能够在项目中使用这些第三方库了。

Q:可能有同学会问这和.pch文件有什么区别? A:猜测Swift底层做了很多优化,会判别当前文件是否用到某些头文件,再定向导入。不必担心性能问题。与pch不同,Swift的头文件导入显得更加智能。