Swift 与 OC 混编

自从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 文件:

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

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

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

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

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

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

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”.注意如果工程名中存在空格” "或者中划线”-“,需要用下划线”_”来代替.

 

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

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. 

2)字符串长度

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

 

 

引用:http://blog.csdn.net/andanlan/article/details/52665479

 

 

 

 

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/2408977/blog/869276

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值