zoukankan      html  css  js  c++  java
  • 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++的库,就有必要这样了。

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

     
     
     
     
     
     
     
  • 相关阅读:
    Educational Codeforces Round 86 (Rated for Div. 2) D. Multiple Testcases
    Educational Codeforces Round 86 (Rated for Div. 2) C. Yet Another Counting Problem
    HDU
    HDU
    HDU
    HDU
    Good Bye 2019 C. Make Good (异或的使用)
    Educational Codeforces Round 78 (Rated for Div. 2) C. Berry Jam
    codeforces 909C. Python Indentation
    codeforces1054 C. Candies Distribution
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/4679048.html
Copyright © 2011-2022 走看看