1 Swift中调用OC
想要在Swift工程中调用OC,那么就需要一个桥接声明文件,这个文件用来告诉Xcode 把这个桥接文件中imoprt的类编译转换成Swfit的类,下面介绍下如何创建桥接文件。
在Swift的工程中随意创建一个OC的类,在最后点了Create之后,xcode会自动弹框询问,简单翻译一下:“正在给Swfit工程添加OC的类,是否需要生成桥接文件”。点击Create Bridging Header就会自动生成一个桥接文件。
然后只要在桥接文件中impor你想用的OC类,就可以在Swfit中愉快的调用啦
2 OC中调用 Swift
反过来OC中调用Swfit其实也类似,首先在OC工程中创建一个Swift类,同样在Xcode提示的时候选择创建桥接文件。之后的步骤就不太一样了,首页在工程配置中将 Defines Module 设置为 YES
再检查下 Product Name 是否为英文 如果不是就改一下 一般设置为工程名
做完以上几个步骤之后 xcode就帮我们生成了一个头文件 Swift_OC-Swift.h 前面的Swift_OC就是设置的Product Name 后面是固定的,虽然工程目录下搜不到这个头文件,但也不影响我们的使用。在需要调用Swfit的OC类中 import下这个头文件 就可以愉快的使用 项目中所有的Swift类了。不过要注意的是 想要能被OC识别的Swfit类必须是继承于NSObject,想要在OC中调用的方法 前面要加上 @objc的声明。
到这里可能有小伙伴会有疑问 如果是OC中调用Swfit xcode帮我们创建的桥接文件好像没有用到 因为这个文件中并没有 import任何东西 我一开始也是这么想的 并且主动删除了这个文件 也把配置中这个文件的路径设置清空 不过Xcode就编译不通过了 具体原因还不懂 有了解的朋友 希望留言告知下。