前言:最近公司有两个项目需要合并在一起,一个是OC开发,另一个是Swift开发。大致说一下流程:
1. buildSetting -> defines module 设置为 yes
2.然后检查一下 buildSetting -> Product Module Name 是否为项目名称(一般都是)
3.创建桥接文件(OC项目中创建Swift文件时会自动提醒,如果当时没有创建可以手动创建)
-
选择head file
名称命名一般为:"项目名-bridging-Header.h"
- 然后 buildSetting -> Objective-C Bridging Heading 点开,将创建的桥接文件拖过去就好了(此时地址为绝对地址,可以把地址前面的部分路径替换为 $(PROJECT_DIR),这样就是相对路径了)
- 将Swift中需要引用的OC文件的头文件引入就好了
4在需要引用Swift文件的OC文件中,引用一个系统隐式创建的头文件。"项目名-Swift.h"
此时就能愉快地引用Swift文件了。
或者在直接在整个类文件前加@objcMembers,这种方式整个类文件中的方法都可以在OC文件中被调用
友情赠送:
- 如果Swift文件中需要用到pods管理的库,需要把podfile中use_frameworks!注释打开。
- 如果报 duplicate interface definition for class ‘xxxx’错误,但是经排查没有重复导入。那么你可以试试,将引入方式由 #import "xxx.h" 改为 #import <xxx.h/xxx.h>
本篇文章暂时写这么多,后续踩到更多的坑,再来更新。