Swift和OC的相互调用
2017-11-28 本文已影响4人
追逐_chase
-
Swift.png
swift调用OC
-
创建一个 OC 的类 选择红色桥接
1.png
![](http://upload-images.jianshu.io/upload_images/2838971-17da632682b9814a.jpg)
-
注意:桥接是一个 .h文件,如果没有选中则可以 根据下图的路径自己创建一个.h文件,填充路径
2.png
-
在桥接的文件里面 导入OC的头文件,系统会转换成Swift的代码
3.png
- 成功调用
![](http://upload-images.jianshu.io/upload_images/2838971-6569439ebbf2459d.png)
OC调用Swift
-
从下图的方框中我们可以看到,这个提示和Swift使用OC的代码一样,所以这个时候我们不创建这个桥接
1.png
-
导入头文件 #import "工程名称-Swift.h" 下图的工程名称是OC
2.jpeg
-
用Swift创建类的时候默认是 internal 权限 所以访问的时候 需要更改Public
3.png
-
成功 可以在OC中使用Swift了
-
如果Swift中有协议的话
- 更改协议的访问权限 为 Public
- 必须用@objc声明,这个声明说明 在转化的时候可以转成OC 的
- 协议必须遵循NSObjectProtocol,因为在转化到OC的时候 所有的协议是遵循NSObject
![](http://upload-images.jianshu.io/upload_images/2838971-aca96edd0d20ff8a.png)
看看系统转化的结果 如下图
![](http://upload-images.jianshu.io/upload_images/2838971-23fa5bc81ebedcde.png)