IOS-Swift、Objective-C、C++混合编程

1、Objective-C调用C++代码

后缀为m文件的是Objective-C的执行文件,而后缀为mm文件的是Objective-C++文件。

直接在Objective-C中是无法调用C++代码的,所以如果需要在Objective-C调用C++语言就需要直接将后缀m文件改为mm,然后就可以调用C++代码了。

Objective-C兼容C,Objective-C++兼容C、C++。


接下来是在OC工程中创建C++文件,并调用C++的代码:


然后在OC文件中直接用C++的语法调用C++,所以前提是OC语言执行文件后缀是mm文件。


2、C++调用Objective-C代码

先继续在上面使用的工程中新建一个Objective-C的类,并添加一个简单的实例方法。


但是是不能直接在C++文件中直接调用OC代码的,会直接失败报错的,因为C++引入的是OC类的头文件,这样是无法通过OC语法,所以在OC的.h头文件是不能有任何OC语法,SO不好意思,把上面OC的.h头文件里的代码全部清掉,然后把OC的.m文件后缀改为.mm文件:


然后在C++代码中调用Objective-C代码:


然后我们来创建Objective-C类,并通过特定的方式来调用:


注意一个容易错误的细节:

如果C++的方法调用后面创建的对象或者方法,会报错,会提示没有声明和定义该对象或者方法,所以要放在后面才能执行通过。这里注意OC的对象调用方法的语法是:[实例对象 方法]。


3、Swift调用C语言代码

这一点和Swift调用C++语言代码是一样的,在Swift工程中新建C++或者C语言文件,都会自动生成一个桥梁文件,写好C++代码或者C代码,都要记得把其头文件导入到这个桥梁文件中。然后就可以在Swift文件中直接用Swift语法直接使用C++和C的方法。

4、Swift、Objective-C、C++混合编程

这里要强调的一点:Swift是不能直接使用C++的代码的,但是可以创建Objective-C文件作为中间人,来调用C++代码。但是有时候设计程序的时候,绝非必要的情况下最好不要这么做,因为C++ -> Objective-C -> Swift 这个过程花时间比较长。如果能通过C语言实现的话,最好直接使用C语言。

有很多有用的库是用C++写的,所以如果Swift需要使用C++的库,就有必要这样了。

具体实践自己另行体会吧。

时间: 2024-08-06 23:18:57

IOS-Swift、Objective-C、C++混合编程的相关文章

Swift和C语言混合编程教程_Swift

作为一种可与 Objective-C 相互调用的语言,Swift 也具有一些与 C 语言的类型和特性,如果你的代码有需要,Swift 也提供了和常见的 C 代码结构混合编程的编程方式. 基本数据类型 Swift 提供了一些和 C 语言的基本类型如char,int,float,double等价的 Swift 基本数据类型.然而,这些 Swift 的核心基本类型之间并不能隐式的相互转换,如 Int.因此,只有你的代码明确要求它们时再使用这些类型,而 Int 可以在任何你想使用它的时候使用. C 类型

iOS - Swift 与 C 语言交互编程

前言 作为一种可与 Objective-C 相互调用的语言,Swift 也具有一些与 C 语言的类型和特性,如果你的代码有需要,Swift 也提供了和常见的 C 代码结构混合编程的编程方式. 1.基本数据类型 Swift 提供了一些和 C 语言的基本类型如 char,int,float,double 等价的 Swift 基本数据类型.然而,这些 Swift 的核心基本类型之间并不能隐式的相互转换,如 Int.因此,只有你的代码明确要求它们时再使用这些类型,而 Int 可以在任何你想使用它的时候使

《从零开始学Swift》学习笔记(Day 71)——Swift与C/C++混合编程之数据类型映射

原创文章,欢迎转载.转载请注明:关东升的博客   如果引入必要的头文件,在Objective-C语言中可以使用C数据类型.而在Swift语言中是不能直接使用C数据类型,苹果公司为Swift语言提供与C语言相对应数据类型.这些类型主要包括:C语言基本数据类型和指针类型.  C语言基本数据类型 如表所述是Swift数据类型与C语言基本数据类型对应关系表.  Swift语言中的这些数据类型与Swift原生的数据类型一样都,本质上都是结构体类型.我们可以他们的构造函数创建这些数据类型的实例.示例代码如下

[译] 原生 iOS(Swift) 和 React-Native 的性能比较

本文讲的是[译] 原生 iOS(Swift) 和 React-Native 的性能比较, 原文地址:Comparing the Performance between Native iOS (Swift) and React-Native 原文作者:John A. Calderaio 译文出自:掘金翻译计划 译者:Deepmissea 校对者:gy134340,Danny1451 原生 iOS(Swift) 和 React-Native 的性能比较 React-Native 是一个混合的移动框架

C/C++在Java、Android和Objective-C三大平台下实现混合编程_Android

Android和iOS开发都支持C++开发,可以一套代码多平台使用.同时C++难以反编译的特性也可以为Android开发带来代码的保密,另一native特性也可以提高代码的运行效率. 一.为什么使用C/C++ 便于移植,用C/C++写得库可以方便在其他的平台上再次使用. 代码的保护,由于java层代码很容易被反编译,而C/C++库反汇难度较大. 提高程序的执行效率,将要求高性能的应用逻辑使用C/C++开发,从而提高应用程序的执行效率. 访问现有开源库,需要访问底层的API或引用一些只有C/C++

Swift 中的面向协议编程是如何点亮我的人生的

本文讲的是Swift 中的面向协议编程是如何点亮我的人生的, 面向对象编程至今已经使用了数十年了,并且成为了构建大型软件约定俗成的标准.作为iOS编程的中心思想,遵循面向对象规范来编写一个 iOS 的应用几乎不可能实现.虽然面向对象有很多优点比如封装性,访问控制和抽象性,但是它也自带有固有的缺点. 大多数类的情况下,当一个单继承的类需要更多不同类中的函数功能时,你会倾向于使用多继承来实现. 但是大部分的编程语言不支持这一特性,而且会导致类的继承关系变得复杂. 在多线程环境下,如果所有对象在函数中

C++与Java混合编程

本文配套源码 现在的程序员,不再像以前一样,掌握一种编程语言就可以混得有模有样了,现实的情况是,真实的项目中,通常是涉及多种编程语言,举几个简单的例子,一个软件为了快速开发,可能是使用Delphi或VB作为界面开发首选语言,底层的指令或核心算法,会使用C/C++处理,涉及数据处理的时候,为了安全和快速开发,会使用Javascript或Python等脚本语言实现数据分析处理.因此,开发者应该学习或掌握语言混合编程. C++和Java是主流的两种编程语言,但是现在整个网上对实现这两种语言混合编程的资

C++ Builder与Matlab混合编程的实现

在C++Builder中调用Matlab工具箱函数,有两种实现方式.一种是基于Matlab环境支持,通过必要的设置实现:笔者在本刊上曾撰文对这种方式进行了专门的阐述.另一种则是完全脱离Matlab环境,通过动态连接库方式实现对Matlab工具箱函数的调用,这可以通过一种开发平台Mediva来实现.相对来说,前者的限制因素较多,而后者则较为方便灵活. 一.Mediva软件平台 Mediva是Mathtools公司推出的一种Matlab编译开发软件平台,提供对Matlab程序文件(M文件)的解释执行

关于c与汇编混合编程的一点总结

在C和汇编混合编程的时候,存在C语言和汇编语言的变量以及函数的接口问题. 在C程序中定义的变量,编译为.asm文件后,都被放进了.bss区,而且变量名的前面都带了一个下划线.在C程序中定义的函数,编译后在函数名前也带了一个下划线.例如: extern int num就会变成 .bss _num, 1 extern float nums[5]就会变成.bss _nums, 5 extern void func ( )就会变成 _func, 一 汇编和C的相互调用可以分以下几种情况: (1)汇编程序