自从swfit 出来之后,swift 开发就正式提上了日程,因swift 目前的版本不够稳定,但也有很多公司已经正式进入了swift 开发,可swift 是一门新出来的语言,有很多已经在OC当中常用的第三方库,还是用的OC语言,不能够和swift 很好的兼容,遇到这种问题,我们今天提供了一种解决方法——混编(hybrid).

1.Object-C bridging-header

Object-C bridging-header 是OC和swift 的桥接文件,该文件的作用是在swift 文件汇总可以使用OC文件中声明(和实现)的变量.常量.类.函数和方法等.

使用:在创建工程的过程中,我们会选择语言(swift or oc),创建好工程之后,如果我们使用与之前选中语言不同的语言来新建一个类,那么会给出一个提示,来提示你创建 bridging-header 文件:

oc swift 混编枚举_桥接

我们选中 “Create Bridging Header”按钮,便会在我们创建swift 文件成功的同时,创建桥接(bridging header )文件.桥接文件名称默认为:”工程名”+”-Bridging-Header.h"

oc swift 混编枚举_oc swift 混编枚举_02

打开创建好的桥接文件,我们可以看到:

oc swift 混编枚举_桥接_03

很明显就可以看到这个文件就是用来引入文件到swift 中的.

1)想要在swift 中引用OC文件,直接在这里导入OC头文件就可以了,导入方式和OC文件的相互导入一样.如下:

oc swift 混编枚举_桥接_04

这样就可以在swift文件中来调用导入的类了:

oc swift 混编枚举_桥接_05

2)如果我们想要给bridging-header 文件重命名或者修改它的路径,可以在Build Setting 中进行设置,Object-C Briding Header 文件路径是相对路径,我们可以直接在这里对这个路径进行修改,修改为新的路径就可以了.

oc swift 混编枚举_桥接_06

2.Swift.h 

swift.h是指swift 模块的头文件,它的作用是在OC文件中你可以使用swift 中声明的变量.常量.类等.

在创建成功桥接文件之后,Command + B之后,就会自动生成swift.h文件,并不需要我们手动创建,在任意OC的类中,导入swift.h文件,那么就可以使用swift 类中的内容了.

swift.h 文件是自动生成的,不需要手动创建,这个文件的内容也不需要手动管理,在每次Build 工程时都会更新.其中swift 文件中使用public 修饰的类(必须继承NSObject)和方法,都可以在OC中直接使用.

swift.h文件名格式为:”工程名”+”-swift.h”.注意如果工程名中存在空格” "或者中划线”-“,需要用下划线”_”来代替.

oc swift 混编枚举_swift_07

 

注:混合开发会遇到的问题:

1)OC NSMutableArrray 与 swift Array

在swift 中使用OC类的方法时,有些参数会是NSMutableArray 的类型,swift 中创建的Array与其他类型不一致,此时需要进行类型转换,swift 编译器会直接报错:Cannot convert value of type '[SwiftClass]' to expected argument type 'NSMutableArray

解决方法:先将Swift 中的Array对象转换成NSArray,然后再将NSArray 转换成NSMutableArray. 

oc swift 混编枚举_文件名_08

2)字符串长度

在OC中的NSString对象会有lenth 属性来获取字符串长度,swift 中可以用characters.count 来代替.

oc swift 混编枚举_文件名_09