本文讨论的问题:
- oc 工程调用 Swift 类;
- Swift 工程调用 oc 类;
以上两种情况,都需要用到桥接文件。
配置桥接文件(本文讨论手动配置桥接文件):
创建一个 .h 文件,自己起个名字,桥接文件通常包含 “bridge” 或者 “bridging” 关键字,自己起个名字即可。
如下图依次配置:工程 - BuildSettings - "bridg" - Objecttive-C Bridging Header - 双击输入:“工程名/桥接文件名”(如果不在根目录,那么要 “工程名/路径/桥接文件名”)。如图(1):
编译,提示 success。(如果没有编译成功,通常是配置的路径有错误,从报错信息中按照 工程名路径文件名 复制之后粘贴到小窗中)
准备调用(这一步分两种情况)
4.1 在 oc 中调用 Swift 类
------比如在oc的 viewController 中要调用 Person.swift 中一个 func run 的对象方法,要在主调的类 viewController 中导入头文件
import "工程名-Swift.h" !!!
还要记得设置2个地方(图片网络借用,谢谢作者!):
然后就可以调用 Swift 类了,如下:
[[Person new] run];
4.2 在 Swift 中调用 oc 类 Person 的 - run 方法
------在 Swift 类 viewController 中调用 oc 的 Person 类的 - run 方法,需要在桥接文件中导入 oc 类的头文件
import "Person.h";
然后就可以在 Swift 的 viewController 中调用了,如下:
Person p = Person()
p.run()
至此,就 ok 了!
附:
图(1)(图1 为网络借用,多谢作者!)