问题回顾
swift 与 oc 代码管理方式的异同
在讲清楚上面问题之前我们先来看一下swift与oc代码管理方式上面的不同之处:
- 1、Swift的代码默认是使用module管理的,同样这里我们也需要把我们的Swift代码作为一个module暴露给我们的OC工程。
- 2、OC代码采用的是和C语言一样的代码管理方式没有namespace的概念。
在OC工程中制作Swift的module并将其暴露给OC工程
要实现该功能我们首先需要对Project中的target编译相关的属性进行更改。具体步骤如下:
- 1、打开工程的target进入到Build settings 界面
选择 all & combined ,随后在检索框输入pack。
更改packaging模块下的 Defines module 为YES 。
并为Product Module Name 起一个名字,默认为工程的target名称。 - 2、创建或导入swift类文件到工程中,在oc中导入步骤一中module name 所生成的[modulename]-swift.h文件。
Tips:
如果Swift类想要被OC发现,必须继承自NSObject并且使用public标记,并且该类中想要被OC访问的方法也必须使用public标记,
具体知识可以去看Swift的访问控制
原因:Swift的代码对于OC来说是作为一个module存在的。
上文只是对自己在oc代码中引入swift过程中所涉及的步骤的一个总结,更为全面的解释请查看苹果的官方文档,Swift and Objective-C in the Same Project