姬長信(Redy)

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

>前言/uff1a在我们写`Swift`的项目中/uff0c经常会用`CocoaPods`引入一些`Objective-C`的第三方库。然而Objective-C并不能直接导入。故这篇博客诞生了。 -------- ##### 问题/uff1a这些第三方库的头文件并不能直接引用导入/uff0c如何解决/uff1f ##### 方案/uff1a使用Objective-C桥接头文件/uff08Objective-C Bridging Header/uff09 - 第一步/uff0c申请一个.h文件。 **注意命名规则为`TargetName-Bridging-Header`** 。 ![](https://cocosbcx.oss-cn-beijing.aliyuncs.com/article/68247715681910673982.png) - 第二步/uff0c选择 Targets -> Build Settings -> 选择all并搜索header。 ![](https://cocosbcx.oss-cn-beijing.aliyuncs.com/article/6824771568191068137.png) - 第三步/uff0c填写桥接头文件/uff08Objective-C Bridging Header/uff09的相对路径。 ![](https://cocosbcx.oss-cn-beijing.aliyuncs.com/article/68247715681910682159.png) - 第四步/uff0c将需要导入的第三方库头文件。/uff08这里以高德地图SDK举例/uff09 ```swift #ifndef Qi_MAMapDemo_Bridging_Header_h #define Qi_MAMapDemo_Bridging_Header_h #import #import #endif /* Qi_MAMapDemo_Bridging_Header_h */ ``` - 完成/uff0c现在已经可以在项目中使用这些第三方库了。 >Q/uff1a可能有同学会问这和`.pch`文件有什么区别/uff1f A/uff1a猜测Swift底层做了很多优化/uff0c会判断当前文件是否用到某些头文件/uff0c再定向导入。不用担心性能问题。与pch不同/uff0cSwift的头文件导入显得更加智能。