Swift语法新进、简洁、漂亮,而在实际开发过程中,Objective-C更贴近底层.对于苹果Objective-C和Swift两种编程语言不同的特点,在现实开发过程中,混编将称为一种长期的趋势.苹果提供的Swift与Objective-C混编方案都是基于Xcode和LLVM编译.
* 普通代码混编:项目内普通代码文件混编(.swift内使用OC的.h和.m文件或者反过来,包括.a形式项目的开发);
* 引用外部Framework:如果你的项目引用一个外部提供的Framework(无论这个Framework是单一语言开发还是本身就是混编的),混编方案也有不同。基本上与普通代码混编相同
普通代码混编
不论是OC项目中混编Swift还是Swift项目中混编OC,当我们第一次创建混编文件的时候,都会出现如图(1-1)所示.
这个是要我们在混编项目中添加桥接文件,点击Create Bridging Header 的时候,会自动生成桥接文件(1-2)所示.当我们不小心删除调也没事.我们可以手动手动添加这个桥接文件.不过名字必须是“ProjectName-Bridging-Header.h”头文件(名称组成:工程名-Bridging-Header.h)
OC调用Swift实现
1.查看桥接文件的路径,如果是自动生成的,无需考虑,如果是手动添加的,
2.定义模块修改为YES(虽然在简单测试过程中NO也不会出错.但是为了以防万一,还是修改成YES)--注:引用第三方的时候必须开启
3.创建1个Swift文件.一个是UIViewController类,并且创建相应属性及方法, 供OC调用.如图(1-3)
4.在OC调用Swift时,首先需要导入头文件.与Swift调用OC不同..我们不需要在桥接文件中做任何的操作.只需要在OC文件中添加头文件即可,如图(1-4)
这里我们要注意的一点是,头文件的书写并不是桥接文件的名.而是"项目名-Swift.h".当我们做到这一步的时候,很多小伙伴们就会迫不及待的调用Swift,,你会发现,我们在编写代码的时候没有任何效果.此时你需要Command+B编译一下程序就可以了...这时我们Command+左键点击一下头文件,你会跳转到一个项目中并不存在,却又真是存在的文件.他是管理你创建的所有Swift文件及相应的成员.有点类似于Framework中暴露在外面的.h文件.如图(1-5)
看到上图你会发现,用红色框起来的部分,就是我们创建的Swift文件..里面有我们之前创建的属性,方法,还有初始化.
通过对比1-3和1-5,我们需要注意几点:1: Swift中定义属性为let的时候,转化成OC属性,就变成只读属性,不能进行修改及赋值.所以我们需要用var来定义属性. 2:Swift中方法转换成OC中方法,Swift3.0与之前的有所不同, 3:对于有多个参数的时,Swift的书写方式,及转换成OC时显示的的方式.可根据自己喜好来定.
5.OC调用Swift
Swift调用OC
第一步,第二步.与OC调用Swift一样
3.创建1个OC文件.一个是UIViewController类,并且创建相应属性及方法, 供OC调用.如图(1-6)
4.在Swift调用OC时,与OC调用Swift不同.我们只需要操作桥接文件即可.把OC文件的头文件添加到桥接文件中.
5.Swift调用OC