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

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

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>voidsayHello();#endif/* defined(__SwiftCallC__CHello__) */

CHello.c文件

#include"CHello.h"voidsayHello(){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>@interfaceOCHello : NSObject//方法没有小括号,真不适应- -!-(void) sayHello;@end

OCHello.m文件

#import"OCHello.h"@implementationOCHello-(void)sayHello{

NSLog(@"hello");

}@end

SwiftCallC-Bridging-Header.h文件

#import"CHello.h"#import"OCHello.h"

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

import UIKitclassViewController: UIViewController {overridefunc viewDidLoad() {

super.viewDidLoad()//Do any additional setup after loading the view, typically from a nib.var oc =OCHello()

oc.sayHello()

}overridefunc 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"usingnamespacestd;@implementationOCHello-(void)sayHello{

cout<<"Hello"<<endl;

}@end

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航