Swift学习06:OC 和 Swift 混编

张建 lol

前言

在项目开发中,多人合作时,可以是 swiftOC 开发,也可以 OCswift

OC 调 Swift

  1. 创建桥接文件
  • 注:在项目中我们第一次创建 swift 文件时,xcode 会提示我们创建,点击创建即可

此时,我们可以把 swift file 文件删掉,然后创建自己需要的文件,

  • 此时我们看列表,发现桥接文件 项目名-Bridging-Header.h

  1. 配置 builder setting
  • 除了上述桥接文件,还有一个隐藏文件 项目名-Swift,在 OC 调用 swift 的时候会用到,在列表中不显示

注:这个名字可以改写成自己想要的 Swift.h

  1. 创建swift文件,供OC调用
  • 创建swift文件,Test 需继承 NSObject , TestViewController 继承UIViewController

  • 分别添加一个方法,在swift文件中,方法前要加上 @objc,不然 OC 无法调用

  1. 调用

OCpch 文件下,导入隐藏生成的 swift.h,这样就可以全局使用,不需要每次都导入

  • ViewController 中使用

Swift 调 OC

  1. 同上,也会创建一个桥接文件 项目名-Bridging-Header.h 文件

  2. 将你创建的 OC 类头文件导入到 桥接文件中

  1. 使用
  • Person 类
1
2
3
// person
let person = Person()
person.say()
  • 枚举

注:
1、一种方式是 NS_ENUM
2、另一种方式是 typedef enum

1
2
3
4
5
6
7
8
9
10
11
// OC定义1:NS_ENUM
NS_ENUM(NSInteger,ENUM_OC_TYPE){
Value1,
Value2
};

// OC定义2:typedef enum
typedef enum{
Num1,
num2
}OCEnumType;

Swift 中使用枚举

1
2
3
4
// Swift 中使用 OC 枚举
let ocEnum1 = ENUM_OC_TYPE.Value1.rawValue;
let ocEnum2 = OCEnumType.init(rawValue: 0)
print("\(ocEnum1)\n\(ocEnum2.rawValue)")
  • Post title:Swift学习06:OC 和 Swift 混编
  • Post author:张建
  • Create time:2020-08-22 22:33:06
  • Post link:https://redefine.ohevan.com/2020/08/22/Swift/Swift学习06:OC和Swift混编/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
On this page
Swift学习06:OC 和 Swift 混编