iOS-Swift 和Objective-c 混编
2020-03-31 本文已影响0人
下班不写程序
一、Swift项目中使用OC 的类
- 当Swift 项目中第一次创建或者手动拖入OC 类的时候, Xcode会提示, 是否创建对应的桥接文件: 创建桥接文件提示
- 当出现该提示框后, 选择cancel, 那么之后引入OC 的类还是会出现该提示框的.
- 当出现该提示框选择了创建, 那么系统就会默认为你创建对应的桥接文件, 在其中引入对应的OC 类的头文件就可以正常使用了.
- 当出现该提示框选择了不创建, 那么之后再也不会出现该弹窗了, 就需要手动来创建桥接文件了:
4.1command + N
创建桥接文件
4.2 target -> Build settings -> 搜索Bridging-Header
设置桥接文件路径
4.3 在自己创建的桥接文件中引入对应的OC 类的头文件就OK了.
二、OC 项目中使用Swift 的类
- 当OC 项目中第一次创建或者手动拖入Swift 类的时候, Xcode会提示, 是否创建对应的桥接文件, 整个操作和上面(Swift项目中使用OC 的类)相同.
- 异同点是, 在OC 项目中的桥接文件中什么都不用写, 但是这个桥接文件也不可或缺!
- 使用Swift 类时, 在OC项目中导入头文件.
3.1 引入格式为:#import "当前项目名称-Swift.h"
3.2 当项目名称中存在中文、横线、数字等, 就会导致引入头文件失败(协议等也注意类似情况).
3.3 出现3.2 的情况后, 解决办法:target -> Build settings -> 搜索product name
修改代码中引用的项目名称
3.4 在需要使用的地方或者.pch中直接引用#import "hah-Swift.h"
即可.- 在Swift4.0 之后, 添加的所有.swift 文件需要做如下操作:
4.1 这个类必须是继承NSObject 或者NSObject 的子类.
4.2 class 前面要添加上@objcMembers , 以代表这个类的所有方法和属性前面都自动添加了@objc.
@objcMembers class SingleTools: NSObject { }
.End