Objective-C与Swift混和编程

2017-08-31  本文已影响12人  Sam_xing

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)所示.

1-1

      这个是要我们在混编项目中添加桥接文件,点击Create Bridging Header 的时候,会自动生成桥接文件(1-2)所示.当我们不小心删除调也没事.我们可以手动手动添加这个桥接文件.不过名字必须是“ProjectName-Bridging-Header.h”头文件(名称组成:工程名-Bridging-Header.h)

1-2

OC调用Swift实现

1.查看桥接文件的路径,如果是自动生成的,无需考虑,如果是手动添加的,

2.定义模块修改为YES(虽然在简单测试过程中NO也不会出错.但是为了以防万一,还是修改成YES)--注:引用第三方的时候必须开启

3.创建1个Swift文件.一个是UIViewController类,并且创建相应属性及方法, 供OC调用.如图(1-3)

1-3

4.在OC调用Swift时,首先需要导入头文件.与Swift调用OC不同..我们不需要在桥接文件中做任何的操作.只需要在OC文件中添加头文件即可,如图(1-4)

1-4

这里我们要注意的一点是,头文件的书写并不是桥接文件的名.而是"项目名-Swift.h".当我们做到这一步的时候,很多小伙伴们就会迫不及待的调用Swift,,你会发现,我们在编写代码的时候没有任何效果.此时你需要Command+B编译一下程序就可以了...这时我们Command+左键点击一下头文件,你会跳转到一个项目中并不存在,却又真是存在的文件.他是管理你创建的所有Swift文件及相应的成员.有点类似于Framework中暴露在外面的.h文件.如图(1-5)

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)

1-6

4.在Swift调用OC时,与OC调用Swift不同.我们只需要操作桥接文件即可.把OC文件的头文件添加到桥接文件中.

5.Swift调用OC

上一篇下一篇

猜你喜欢

热点阅读