iOS-Swift 和Objective-c 混编

一、Swift项目中使用OC 的类

  1. 当Swift 项目中第一次创建或者手动拖入OC 类的时候, Xcode会提示, 是否创建对应的桥接文件:
    创建桥接文件提示
  2. 当出现该提示框后, 选择cancel, 那么之后引入OC 的类还是会出现该提示框的.
  3. 当出现该提示框选择了创建, 那么系统就会默认为你创建对应的桥接文件, 在其中引入对应的OC 类的头文件就可以正常使用了.
  4. 当出现该提示框选择了不创建, 那么之后再也不会出现该弹窗了, 就需要手动来创建桥接文件了:
    4.1 command + N 创建桥接文件

    4.2 target -> Build settings -> 搜索Bridging-Header
    设置桥接文件路径

    4.3 在自己创建的桥接文件中引入对应的OC 类的头文件就OK了.

二、OC 项目中使用Swift 的类

  1. 当OC 项目中第一次创建或者手动拖入Swift 类的时候, Xcode会提示, 是否创建对应的桥接文件, 整个操作和上面(Swift项目中使用OC 的类)相同.
  2. 异同点是, 在OC 项目中的桥接文件中什么都不用写, 但是这个桥接文件也不可或缺!
  3. 使用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" 即可.
  4. 在Swift4.0 之后, 添加的所有.swift 文件需要做如下操作:
    4.1 这个类必须是继承NSObject 或者NSObject 的子类.
    4.2 class 前面要添加上@objcMembers , 以代表这个类的所有方法和属性前面都自动添加了@objc.
    @objcMembers class SingleTools: NSObject { }

.End

你可能感兴趣的:(iOS-Swift 和Objective-c 混编)