您的位置:首页 > 移动开发 > Swift

Swift和OC的混编(一)

2017-07-04 19:32 162 查看

Swift和OC的混编(一)

由于最近swift版本趋于稳定的趋势,本人也一直在研究并尽可能的将swift用于现有的项目中,希望逐渐的替代之前的OC代码。废话不多说,直接上!

1、既然希望在OC中使用swift,那么第一步肯定需要先创建一个swift文件(虽然第一步可能要配置一些东西,这边我们按照常规的思想操作),创建过程中会给出提示



直接点击(Create Bridging Header)即可。之后会生成这样一个文件




测试中发现,只有当swift调用OC类的时候,该文件才会有用。当然,你也可以重新设置它的名称,那么就需要重新设置它的路径




当你默认点击create,并且没有做任何修改的时候,该路径是默认创建的。


2、修改swift的相关配置



Defines Module值必须要修改为YES。有文说,swift是以module方式管理的,所以该选项必要要设置为YES。


3、在OC中引入相关头文件



其实,该头文件就是之前所需要记下的(项目名称(默认值)+"-Swift")构成,这时候,就可以在OC类中直接使用swift类了。


4、其实,这时候,系统帮我们自动生成了一个中转类



这是系统根据swift文件所对外公开的方法和属性等生成的一个中间类(上下就是其他swift文件的中间类),所以我们在OC中调swift文件时所使用的语法,其实还是OC语法,并不影响我们使用。


5、swift类中引用OC类

这里我创建了一个OC类型的Model,希望在OC的VC里面配置,然后传给swift类的View。



现在就需要用到之前系统所帮忙创建的桥接(我是这么称呼它的~)文件了。
需要在该文件中引入你想在swift中所调用的类的头文件。




下面就可以在swift类中直接调用OC类




在目标swift文件中,直接使用OC类model就不会出错了。至于willSet和didSet方法,这边主要用于类似OC中的set方法(swift也有get和set方法),具体会在后面详解。现在就需要在OC类中给该swift类传一个model值过来,并打印出结果。




这边再截图一下那个系统帮忙生成的中间类,会看到model这个属性值



所以,只要做好相关配置之后,对于我们而言,使用的还是OC语法。至于哪些属性或者
方法会在系统中间类中生成,会在后面有机会再说,这并不是本篇内容的重点。
下面打印一下我们的传值结果,来验证一下




可以看出,就到目前而言,我们已经完全可以不去管我们在调用的是否还是swift文件了。因为就现在而言,我们的调用全都是OC语法。


暂时先到这,通篇大白话,如果错误,希望不吝指出,一起共勉!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  swift 混编 objective-c