OC引用Swift代码

之前的工程代码都是用OC的,一直想转成swift的,但是感觉全转不太靠谱,所以决定一部分一部分慢慢转,所以需要用到OC和Swift代码混编。

1.创建swift代码。

@objc public class XX : XX

{

}

@objc ,public 最好都加上,然后子类也加上比如继承NSObject

然后就会问你是否创建header文件

OC引用Swift代码_第1张图片

选择是就行了,然后自动创建一个$(Project_Name)-Bridging-Header.h的文件,$(Project_Name)默认是工程名字,但是也可以修改。如果你选择了否或者不小心把这个文件删了怎么办了。

第一种就是:在SWIFT_OBJC_BRIDGING_HEADER将其选项删除,然后新建的时候就会又提示让你建立。

第二种就是:建立一个新的文件然后在SWIFT_OBJC_BRIDGING_HEADER,将路径输入进去。

这个文件的作用就是当swift需要使用OC代码的时候在SWIFT_OBJC_BRIDGING_HEADER文件将OC的头文件导入进去。

2.xcode自动帮你创建了$(Project_Name)-Swift.h文件

这个自动帮你创建好了。然后你在OC类里面#import这个文件以后就能直接使用Swift的代码了。

3.工程的一些配置

Packaging下面的Defines Module设置为YES

Swift Compiler - Code Generation下面的Objective-C Bridging Header,Objective-C Generated Interface Header Name比较重要的两个路径配置选项


一个莫名其妙的错误:

error:opening import file for module 'Swift':Not a directory

我只把Framework Search Path里面的libxml2去了就编译通过了。stackoverflow里面的完整答案是:

1:简化这个Framework Search Path只留下

$(inherited)

$(SRCROOT)

2:将libxml2去了。

你可能感兴趣的:(OC引用Swift代码)