关键摘要:
1、swift中调用OC,引用 项目名-Bridging-Header.h
2、OC中调用swift,引用 项目名-Swift.h
转载自:http://www.it165.net/pro/html/201501/32179.html
对于已经工作的开发者,并不适合也没有条件从一个全新的swift项目开始,进行开发. 虽然网上关于swift和oc混合编程的教程比较多,但是大多是基于 swift项目的,所以对咱们 OCer的参考价值有一定折扣.
现在swift虽然仍然存在很多缺陷,但是鉴于苹果的强势,是时候在项目中把简单的功能交给swift了,给自己,给项目,给swift一个缓冲区,都是极好的.
说了这么多,开始上代码.
现在的背景是: 已经有一个oc项目了,我想要加入 swfit,并且实现 oc调用 swift ,swift调用oc .
1.新建一个swift文件
2.接下来会询问你是否建立桥接文件,点击是 ,那么我后面的就是多余的了,所以选择取消,我们手动建立桥接文件
3.手动建立桥接文件:新建头文件
关于命名: 有经验的人都知道,这个头文件是项目公用的,同时如果自动创建,文件名也是 :
项目名-Bridging-Header.h
但是因为我现在的项目名是中文,所以我自己命名了一下.
4. 配置头文件
在build setting里面搜索 swift ,根据实际情况进行配置:
注意:是相对于工程文件所在的相对路径.从 Finder里面看,不要让项目中得group扰乱你的判断
5.在头文件中引入需要的 oc头文件,这里我就用 UIKit了
6.编写代码
可以看到,我们可以使用UIKit的类了
注意:关于自定义类,希望有个好的命名规范,那么在混合编程中,你将受益无穷
7.oc调用swift
现在因为测试我想把窗口的根控制器设置为我的swift的那个.
因为swift没有头文件,所以不好办了...
其实,系统默认给我们生成了头文件(需要我们的swift类是NSObject的直接或者间接子类),我们只要引入
项目名-Swift.h
没办法了,我的项目名是中文...
引入:
8.使用 swift的类
9.运行
一切正常 (好丑,不要吐槽)