Swift调用C、C++、Object-C

1.Swift调用C语言
a,首先在项目中添加 CFile 文件命名为CHello,同时产生桥梁文件。

  

 

b,创建之后的项目结构如下图所示:

 

b,在CHello.h文件中编写接口方法,在CHello.c编写实现方法,最后在SwiftCallC-Bridging-Header.h文件中引入CHello.h

CHello.h文件

#ifndef __SwiftCallC__CHello__

#define __SwiftCallC__CHello__



#include <stdio.h>



void sayHello();



#endif /* defined(__SwiftCallC__CHello__) */

CHello.c文件

#include "CHello.h"



void sayHello(){

    printf("hello\n");

}

SwiftCallC-Bridging-Header.h文件

#import "CHello.h"

 

2.Swift调用OC语言
a,同理先在项目下添加object-c文件命名为OCHello。这里因为已经创建过文件桥梁,这里就不需要了。

 

b,在OCHello.h文件中编写接口方法,在OCHello.c编写实现方法,最后在SwiftCallC-Bridging-Header.h文件中引入OCHello.h头文件

OCHello.h文件

#import <Foundation/Foundation.h>



@interface OCHello : NSObject

//方法没有小括号,真不适应- -!

-(void) sayHello;

@end

OCHello.m文件

#import "OCHello.h"



@implementation OCHello

-(void)sayHello{

    NSLog(@"hello");

}

@end

SwiftCallC-Bridging-Header.h文件

#import "CHello.h"

#import "OCHello.h"

 

c,最后在Swift代码中调用Object-C即可以了~

import UIKit



class ViewController: UIViewController {



    override func viewDidLoad() {

        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.

        var oc = OCHello()

        oc.sayHello()

    }



    override func didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }



}


3.Swift调用C++语言
调用c++代码只要将原来的OCHello.m文件改为OCHello.mm,然后就可以在该文件中引用iostream头文件....^^瞬间有c++的feel了!
最后稍微修改下实现的方法就可以了。

#import "OCHello.h"

#include "iostream"



using namespace std;



@implementation OCHello

-(void)sayHello{

    cout<<"Hello"<<endl;

}



@end

 

你可能感兴趣的:(object)