之前一直没有总结这块的相关知识,现在有幸给大家介绍一下我自己的小经验,如有不对之处欢迎纠正!
苹果推出swift之后版本一直不稳定,每一次更新都会修改很多方法,这让我们这些程序员使用起来有些投鼠忌器,不过3.0版本出现之后swift趋于平稳,相信会有越来越多的开发者会开始使用swift进行APP开发。
那么问题来了,很多工程都是用OC语言开始开发的,如何才能引入swift文件呢?相反的,如果APP开发时用的是swift语言,而团队中其他成员使用的是OC语言,这个时候如何引用其他成员的OC文件呢?接下来,我就浅谈一下这两种情况下混编的小经验:
1、OC工程中引入swift文件
第一步:创建一个OC工程:取名“OCQuoteSwiftTest”,然后使用 Cocoa Touch Class 创建一个swift文件取名“Test”。
ps:记得语言选Swift哈
第二步:点击 next->finish,会弹出一个对话框,问你是否选择创建一个桥接文件,当然要选 Create Bridging Header。
创建完之后文件夹内会多出一个文件,如下图所示:
ps:这是我们 command+b 编译一下不会报错,不过这还不算引用成功。我们试一下使用Test类,这时就会报错找不到Test这个类,所以我们还需要做下面的工作。
第三步:配置“工程设置”,找到 Build Settings 一栏,搜索框内输入“packaging”,然后修改 Defines Module 属性为YES。
第四步:成功引入swift头文件
在ViewController.m中使用创建的swift文件,格式为:#import "OCQuoteSwiftTest-Swift.h",即:#import"工程名-Swift.h"
这时我们就算成功引入了swift文件,接下来我们验证一下。
给Test类声明一个可选变量str,在ViewController.m的方法中创建Test类的实例并对其str属性赋值,打印赋值结果。
结果证明swift文件引入成功!
在OC工程里引用swift文件已经OK,可是这种情况下swift文件(Test类)中引用OC类(ViewController)怎么做呢?
其实我们只要将swift需要引用的OC类的头文件写入桥接文件中就可以了,不过没有提示,需要自己敲出来,在swift文件中引用OC类也是没有提示的。
2、Swift工程中引入OC文件
第一步:创建OC工程
第二步:创建OC类,并同时创建桥接文件
第三步:配置 Build Settings 的 Defines Module 选项为YES
第四步:在桥接文件中引入被引用的OC文件的头文件:#import "xxx.h"
第五步:在OC文件中使用swift类还是需要在.m中声明 #import "工程名-Swift.h"
ps:只能在.m中引用,在.h中引用报错!
3、在OC工程中引入swift文件,舍弃创建桥接文件的选择,手动创建桥接文件
第一步:引入swift文件
第二步:创建桥接文件,在下图右下角选择 Header File文件,直接拖进左侧Supporting Files文件夹中(当然也可以 command+n 创建)。
注意头文件名字的命名规范:工程名称-Brdging-Header.h
创建之后的头文件:
第三步:桥接文件新建之后,在里面使用 #import 的方式来引用OC文件/库
第四步:也是最重要的一步,配置桥接文件路径
在 Build Settings 里面输入 Objective-C B,找到 Objective-C Bridging Header 选项,写入路径
路径格式:工程名/工程名-Bridging-Header.h
ps:记得把 Defines Module 属性 设为YES
注意:当工程名中含有 “-” 或者 “空格” 时,记住 在OC文件中引用swift文件时引入 “工程名-Swift.h”时 工程名里面的“-” 或者 “空格” 要写成下划线“_”
我把这三种情况写了3个小demo,欢迎大家下载指教,不要钱哟
http://download.youkuaiyun.com/download/panjianlei1990/9793146