Swift和Objective-C混编

时间:2019-09-27
本文章向大家介绍Swift和Objective-C混编,主要包括Swift和Objective-C混编使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

最近在写一个Swift项目,学习过程中遇到了一些问题。首先面临的就是Swift和Objective-C混编的问题。因为博主用Objective-C的时间久了,而且目前Swift的三方库发展时间还短,并没有像Objective-C那么丰富,所以以前项目中经常使用的一些三方库比如:MJRefresh、SDWebImage 等,一时间也没有找到好的Swift版来替代,所以该篇博文记录了一些Swift和Objective-C混编的一些问题。

1.编辑Podfile文件

使用Xcode打开Podfile文件,加入将要使用的三方库,比如MJRefresh,然后执行pod install

1
2
use_frameworks!
pod 'MJRefresh'

2.建立桥接文件

简单的做法是直接在Swift工程中新建Objective-C文件,Xcode会自动提示你是否创建bridging header桥接头文件,点击创建后Xcode会自动为你创建一个桥接头文件,并完善桥接路径。新建的Objective-C文件需要的话可以保留,不需要直接Move to Trash即可。

当然也可以直接commend + N 新创建一个Header File,命名为ProjectName-Bridging-Header.h并在Building Settings中自己设置桥接头文件的路径

3.注意

如果在Podfile文件中加入了use_frameworks!,那么在桥接头文件中可以不导入Objective-C三方库的头文件,直接在使用的文件中导入就可以。否则的话必须在桥接头文件和使用的地方导入该三方库,必须包含三方库文件夹名称,比如:#import "MJRefresh/MJRefresh.h"

Objective-C调用Swift

1.编辑Podfile文件

同样需要在Podfile文件中加入三方库和use_frameworks!

1
2
use_frameworks!
pod 'Charts'

2.导入Swift库头文件

Xcode会自动为Project生成头文件以便在Objective-C中调用。
在Objective-C类中调用Swift,只需要#import "moduleName-Swift.h"即可调用,Xcode提供的头文件以Swift代码的模块名加上-Swift.h为命名。
在这个头文件中,将包含Swift提供给Objective-C的所有接口、Appdelegate及自动生成的一些宏定义

3.注意

moduleName-Swift.h在Xcode中是无法搜索查看的,只能从import中点击进去查看。

在大部分情况下,Objective-C都可以无缝地调用Swift,但是由于Swift相对于Objective-C多了一些新特性,比如泛型、元组、枚举的等,所以Swift暴漏给Objective-C的接口多了一些限制,因此Swift只能暴露在Objective-C中有效的接口。

原文:大专栏  Swift和Objective-C混编


原文地址:https://www.cnblogs.com/petewell/p/11597618.html