1. 编辑 .podspec 文件

  1. 记得添加 **s.swift_version = '5.0'**<br /> 官方文档:[https://guides.cocoapods.org/syntax/podspec.html#swift_versions](https://guides.cocoapods.org/syntax/podspec.html#swift_versions)<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/345290/1579408061639-e269257e-704f-4b6e-ac63-c71405b6b720.png#align=left&display=inline&height=746&name=image.png&originHeight=746&originWidth=1103&size=208439&status=done&style=none&width=1103)

2. 编辑 Objc 和 Swift 代码

对于 Swift 文件:

  1. - 为了给 Objc 调用,类需要继承自 **NSObject**
  2. - 为了给 Objc 调用,类和方法需要添加 **[@objc](#)** 修饰
  3. - 为了将类、方法对外,需要为器添加 **public** 访问控制权限

对应 Objc 文件:

  1. - 正常编码

image.png
不需要添加桥接文件,添加了也没用甚至会报错:
[ObjcSwiftMixed.podspec line: 22] error: using bridging headers with framework targets is unsupported

至于在项目中怎么引用到这些文件,继续往下看

3. 在 Objc 项目中使用

通过导入以下两个头文件,这两个文件都是在安装编译时自动生成的,项目就可以使用 ObjcSwiftMixed 了

  1. #import <ObjcSwiftMixed/ObjcSwiftMixed-Swift.h>
  2. #import <ObjcSwiftMixed/ObjcSwiftMixed-umbrella.h>

p1.png
p2.png

  1. 如果遇到下面的问题,你可能需要在 Build Settings / Add User-Defined Setting,添加 SWIFT_VERSION = 5.0
  1. [!] Unable to determine Swift version for the following pods:
  2. - `SnapKit` does not specify a Swift version and none of the targets (`oc-ui-demo`)
  3. integrating it have the `SWIFT_VERSION` attribute set.
  4. Please contact the author or set the `SWIFT_VERSION` attribute in
  5. at least one of the targets that integrate this pod.
  1. 你可能还需要为项目添加桥接文件,创建 File.swift 的同时并创建 Bridging Header,File.swift 可以删除掉

p3.png
p4.png

  1. 运气好的话,上面两个问题都不会碰到

4. 在 Swift 项目中使用

没啥要处理的,正常使用
p5.png

5. 混编参考文章

Allow Non-modular Includes In Framework Modules => YES
unbrella header
module.modulemap

Build Options
Embedded Content Contains Swift Code => YES
Always Embed Swift Standard Libraries => YES
Defines Module => YES

public headers
cannot find Swift declaration for this class

6. 附件

ObjcSwiftMixed.zip

[备注]:怎么屏蔽 swift 警告?