Swift Objective-C混编问题
文章作者:gyro永不抽风
发布时间:2020年04月10日 - 22:04
最后更新:2020年09月15日 - 07:09
原始链接:http://hexo.gyrojeff.moe/2020/04/10/Swift-Objective-C%E6%B7%B7%E7%BC%96%E9%97%AE%E9%A2%98/
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 转载请保留原文链接及作者!
Introduction
在实际开发过程当中,Swift在某些情况运行效率低下,我们需要C++来实现某些功能。这就引入了混编问题。其实Swift不仅可以和Objective-C混编,还可以和C、C++混编。
和Objective-C混编
众所周知,Objective-C需要头文件来开放接口,而要让Swift和Objective-C混编,就需要将Objective-C的方法开放接口给Swift。
具体实现
New File -> Objective-C,系统会弹出弹窗问要不要Create Bridge File,选择Yes。然后在Objective-C文件中import这个Bridge File作为头文件,开放的接口写在Bridge File当中
Objective-C:
1 | #import "xxxxx-Bridge-File.h" |
Header:
1 | #import <Foundation/Foundation.h> |
Swift调用:
1 | ClassA.testMethod(1.0, 2.0) |
关于在项目中的设置
设置部分可以在Build Setting中找到(项目文件中)
C、C++混编的实现
我们会发现,Objective-C的语法糖不多,我们更想要的是C++。而众所周知,Objective-C是可以调用Cpp的,而且将后缀名改为.mm
之后,是Objective-C++,支持C++的方法及语法。全部都不难实现。其实只需要将所有东西分装起来即可。
比如我做OpenCV处理时分装的库:
HQMatProcessor.hpp
:
1 | // |
HQMatProcessor.cpp
:
1 | // |