项目中用到了C++与OC混编,正好有时间来总结一下.

  • 基本思路: C++中是不能直接调用OC代码的,所以要通过一个中介--C,来让他们建立联系,从而实现在C++中调用OC代码.

1.新建C++文件

  • Xcode会自动生成.hpp和.cpp的默认文件(由于Xcode不需要手动编译链接,因此写到.hpp和.cpp中没有差别,以下默认写到.hpp中)

新建hpp文件.png

2.在.hpp中实现如下代码(TestObject.hpp)

public:
void testFunction(int temp){c_testFunction(temp);
}
  • tips:如果是重载方法,需要在函数名后面加override ("如 void init() override ")

3. 创建.mm文件(LNTestObject.mm)

  • 在.mm中写C实现并调用OC方法

4.创建桥接文件并在.hpp中include(TestObject-C-Interface.h)

  • 目的是让.hpp中c++方法能找到对应c的方法
//声明实现的C方法
void c_testFunction(int temp);
  • 最后需要注意的:根据编译器特性,LNTestObject.mm 中实现的C方法不必再LNTestObject.h中再声明

实现以后的效果如下:

c++与oc混编之c++中调用oc方法相关推荐

  1. Swift与OC混编过程中的配置

    女主宣言 在使用Swift进行iOS开发的过程中,经常涉及到Swift与OC混编的情况,有时主工程是OC的需要另外编入Swift代码,而有时主工程是Swift的需要另外编入OC代码.这其中涉及到修改一 ...

  2. swift和OC混编

    swift和OC混编

  3. Python 在子类中调用父类方法详解(单继承、多层继承、多重继承)

    Python 在子类中调用父类方法详解(单继承.多层继承.多重继承)   by:授客 QQ:1033553122   测试环境: win7 64位 Python版本:Python 3.3.5 代码实践 ...

  4. 如何在java中调用js方法

    [java] view plain copy/* * 加载脚本引擎,并在java中调用js方法 */ public void test2() { ScriptEngineManager manager ...

  5. 多维柔性作业调用_摆脱困境:从预定作业中调用安全方法

    多维柔性作业调用 假设我们已经实现了一个Spring支持的应用程序,并使用Spring Security的方法安全性表达式对其进行了保护 . 我们的下一个任务是使用安全方法实施计划作业. 更具体地说, ...

  6. 摆脱困境:从计划作业中调用安全方法

    假设我们已经实现了一个Spring支持的应用程序,并使用Spring Security的方法安全性表达式对其进行了保护 . 我们的下一个任务是使用安全方法实施计划作业. 更具体地说,我们必须实现一个计 ...

  7. [js] js循环中调用异步的方法,如何确保执行结果的顺序是正确的?

    [js] js循环中调用异步的方法,如何确保执行结果的顺序是正确的? An example:let searchApi = function(arg){return new Promise((reso ...

  8. vuex 在非组件中调用 mutations 方法

    版权声明:本文首发 http://asing1elife.com ,转载请注明出处. https://blog.csdn.net/asing1elife/article/details/8265566 ...

  9. Java实现 for循环输出空心的菱形 在main方法中调用printHollowRhombus()方法完成10行的空心菱形输出,其中 printHollo

    Java实现for循环输出空心的菱形 @author asus 在main方法中调用printHollowRhombus()方法完成10行的空心菱形输出,其中 printHollowRhombus() ...

最新文章

  1. 位运算符Java与详解_java位运算符详解
  2. SpringMVC 中整合JSON、XML视图一
  3. MongoDB同步到Oracle,MongoToOracleMongoDB数据库迁移工具
  4. Android之面试题总结加强版(一)
  5. 解决AttributeError: 'str' object has no attribute 'decode'报错问题
  6. 《天天数学》连载09:一月九日
  7. Vagrant搭建开发环境1--总体介绍
  8. kafka集群为什么需要三个节点_Kafka突然宕机了?稳住,莫慌!
  9. 时间序列分析python课程论文_python时间序列分析
  10. matlab 对数函数表示,matlab对数函数怎么表示
  11. SpringCloud原理分析
  12. 任正非:华为没有996更没有007,“狼性文化”其实是三个精神
  13. python利用datetime模块计算时间差
  14. 1 Openwrt无线中继设置并访问外网
  15. “全民创业”是新时代的上山下乡
  16. 软件测试工程师的工资有多高?
  17. VuePress构建一个文档管理网站
  18. 自动化测试 | Selenium自动化测试框架,实战遇到的坑都在这了,玩转自动化测试
  19. 毕业论文避免查重率过高技巧
  20. MATLBA基础图像处理算法之四叉树分割法

热门文章

  1. 网络协议分析小程序exe制作 python
  2. 三天玩玩UIPATH的RPA的机器人自动化的玩意儿
  3. 中国部分城市地震危险度排名
  4. 判断元素16种方法expected_conditions
  5. 个人博客开发日记01
  6. java实现自己的trim效果---去掉首尾指定字符
  7. Prompt工程:AI2.0时代打开大模型能力的金钥匙
  8. 数据分析实战之决策树(泰坦尼克号乘客生存预测)
  9. FPGA基于GS2971/GS2972实现SDI视频收发 提供工程源码和技术支持
  10. 跟着狂神学JAVA的第七天