iOS中OC与Swift互相桥接混编(注意项目中有多个TARGETS的情况)

一、Swift项目中桥接OC文件

Swift项目中桥接OC文件相对来说比较简单,一般在第一次创建OC文件的时候Xcode会弹出创建桥接头文件的提示

直接点击Create Bridging Header系统就自动为我们创建好了桥接头文件,并且自动将头文件路径配置好了,所以这种方式非常便捷

但是,有时候我们并不是第一次在Swift项目中创建OC文件时,Xcode并不会再为我们自动创建桥接文件,需要我们自己创建,然后配置路径。

我们自己新建一个.h文件。命名为xxx-Bridging-Header.h就行了,也可以随意命名,创建好以后,在Build Settings中找到上图中的Objecttive-C Bridging Header选项,然后将创建好的head文件拖到这个路径配置中,就可以了

然后在创建的这个head文件中#import需要使用到的OC文件。就可以在Swift中索引出OC文件的类了。


二、OC项目中桥接Swift文件

一般在OC项目中桥接Swift文件,只需要引入头文件#import "xxx-Swift.h"就可以在OC中调用Swift相关的类了。xxx为项目的Project Name

但是,在实际桥接中,常常会遇到报错'xxx-Swift.h' file not found,头文件找不到的情况。

因为项目配置中桥接头文件的名称有可能和我们项目名称不一致,所以会导致桥接头找不到。

这个时候我们需要检查Build Setting中的Objecttive-C Generated Interface Header Name选项是否和我们import的名称一样,需要改成一样的就可以解决报错问题了。

如图,如果这个选项中的名称为test-Swift.h,那么我们在OC中桥接的时候就应该为#import "test-Swift.h",才能不报错。

三、如果遇到有多个TARGETS的情况

如果遇到项目中有多个TARGETS的情况,我们在创建相应的OC/Swift文件的时候需要选中所有需要桥接的TARGETS选项,才能在对应的TARGETS的Build Setting中看到对应桥接路径配置的选项,然后每个TARGETS的Head都需要配置一样

不然在切换到不同的TARGETS下以后,也有可能因为不同TARGETS下配置的Head不一致,导致在不同的TARGETS下再次出现'xxx-Swift.h' file not found的错误。

因为Swift是不需要引用头文件就可以互相调用的,所以在OC中桥接Swift只需要引入一次,就可以调用项目中所有的Swift文件类了

你可能感兴趣的:(iOS中OC与Swift互相桥接混编(注意项目中有多个TARGETS的情况))