Swift也出来一年多的时间了,虽然现在还没有大面积使用,但是其语法的轻便简洁等特性,相信在不久的将来,定会成为OC的替代者,好久没有写东西了,趁着今天有点时间,就来说一下Swift和OC的混用。
一.在OC中使用Swift
1.首先创建一个工程名字就叫做CHWTest1
2.在工程的Build Setting中把Defines Module改为YES,如图
3.把Product Name设为工程的名字,如图
4.在你的OC文件中导入ProjectName-Swift.h(这个ProjectName-Swift.h是系统自动创建的,不要手动去创建,ProjectName是你的工程得名字,这里就是CHWTest1)
这时候编译会报错,因为并没有Swift文件
5.创建Swift文件
这里创建一个Swift的类,语言选择为Swift,然后会提示你,是不是创建一个OC的桥接头文件,这里选择YES,创建完之后,你的工程里是这样的
是的,你会发现你的工程中多了个 PrductName-Bridging-Header.h的一个文件,这个的作用就是OC和Swift的桥接,里面有这样一句话
Use this file to import your target's public headers that you would like to expose to Swift.意思就是,在这里面你个以导入类,以供你的Swift使用,这里面我的例子是OC-Swift-OC三个类之间的push,具体代码如下
然后push的效果就出来了,如图
OK,到这里,OC中使用Swift就已经结束,不难吧!
二,如何在Swift中使用OC
Swift中使用OC文件和上面差不多,只是需要几步
1.创建一个Swift工程,这里面就叫做CHWTest2
2.Swift代码引用OC,需依靠 Objective-C bridging header 将相关文件暴露给Swift,创建 Objective-C bridging header 有两种方法:
(1)当你在Swift项目中尝试创建OC文件时,系统会自动帮你创建 Objective-C bridging header,如下
此时除了 .h 、.m 文件之外,会额外多出一个叫做 项目工程名-Bridging-Header.h 的文件,这个文件中导入的类是可以暴露给Swift看到的。你要做的,只是#import XXXX.
这个步骤和上面是差不多的,另外一种方式就是
(2)自己创建 Objective-C-bridging-header这个桥接文件
File > New > File > (iOS or OS X) > Source > Header File,切记,名字 一定要 是 项目工程名-Bridging-Header.然后还有一步,在项目的 Build Settings 选项里,要确保Swift Compiler 选项里有这个 Bridging Header 文件的设置,路径必须指向文件本身,而不是目录!
这里,Swift中就可以使用OC文件了!