OC项目中使用Swift

问题回顾

在创建iOS project时,一般情况下我们会根据项目开发时想要使用的开发语言来决定创建Swift project还是OC project。在近期的项目开发中主要采用的是swift语言,于是在需要用到之前的OC代码时考虑的问题便是如何在Swift中使用OC,这一点Xcode已经为我们提供了相应的方案。
随着Swift开发的组件变得越来越多。周末闲下来的时候想把近期自己用Swift开发的组件运用到之前的oc项目中,在使用过程中却产生了这样的问题由于Swift并没有.h文件的概念。我要怎么引入Swift写的类到OC的.m文件中。

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

你可能感兴趣的:(OC项目中使用Swift)