天天看点

Swift和OC的混编(一)Swift和OC的混编(一)

Swift和OC的混编(一)

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

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

Swift和OC的混编(一)Swift和OC的混编(一)
直接点击(Create Bridging Header)即可。之后会生成这样一个文件           
Swift和OC的混编(一)Swift和OC的混编(一)
测试中发现,只有当swift调用OC类的时候,该文件才会有用。当然,你也可以重新设置它的名称,那么就需要重新设置它的路径           
Swift和OC的混编(一)Swift和OC的混编(一)
当你默认点击create,并且没有做任何修改的时候,该路径是默认创建的。           

2、修改swift的相关配置

Swift和OC的混编(一)Swift和OC的混编(一)
Defines Module值必须要修改为YES。有文说,swift是以module方式管理的,所以该选项必要要设置为YES。           

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

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

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

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

5、swift类中引用OC类

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

Swift和OC的混编(一)Swift和OC的混编(一)
现在就需要用到之前系统所帮忙创建的桥接(我是这么称呼它的~)文件了。
需要在该文件中引入你想在swift中所调用的类的头文件。           
Swift和OC的混编(一)Swift和OC的混编(一)
下面就可以在swift类中直接调用OC类           
Swift和OC的混编(一)Swift和OC的混编(一)
在目标swift文件中,直接使用OC类model就不会出错了。至于willSet和didSet方法,这边主要用于类似OC中的set方法(swift也有get和set方法),具体会在后面详解。现在就需要在OC类中给该swift类传一个model值过来,并打印出结果。           
Swift和OC的混编(一)Swift和OC的混编(一)

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

Swift和OC的混编(一)Swift和OC的混编(一)
所以,只要做好相关配置之后,对于我们而言,使用的还是OC语法。至于哪些属性或者
方法会在系统中间类中生成,会在后面有机会再说,这并不是本篇内容的重点。
下面打印一下我们的传值结果,来验证一下           
Swift和OC的混编(一)Swift和OC的混编(一)
可以看出,就到目前而言,我们已经完全可以不去管我们在调用的是否还是swift文件了。因为就现在而言,我们的调用全都是OC语法。           
暂时先到这,通篇大白话,如果错误,希望不吝指出,一起共勉!!!