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