OC引入Swift,混编
2016-04-19 本文已影响297人
阳光的大男孩儿
一、OC中引入Swift
最近在研究swift时候,需要实现OC与Swift混编,因此总结了以下几个步骤实现OC中引入Swift。
下面说一下详细的步骤:
1.创建一个 ''aaaa'' 的 OC 的工程。
2.创建一swift文件。

3.创建一个名字为"LearnSwift"的swift文件。

4.在创建的过程中会显示如下:

5.点击"Create Bridging Header",这时就会创建成功。(ps:一般情况下,要是OC中引入Swift的话不用创建这个桥接文件也没事)。
6.为了引入swift文件中的东西,我先在LearnSwift中创建如下两个类:
class LearnSwift : NSObject {
func logsth(strToLog:NSString) {
NSLog("年轻人我跟你说,想当年我装逼的时候你还是一滴液体");
}
}
public class Test: NSObject {
public func log() {
print("这是Swift的方法")
}
}
7.我在"ViewController.m"里面,引入如下头文件。
#import "aaaa-Swift.h"
(PS:格式必须正确#import "工程名-Swift.h"
,我创建的''aaaa''工程)。
8.在 我的工程 -> Buid Settings -> Packaging ->Dedines Module (改为" YES ")
效果如下:

9.在@implementation之前(或者在@interface之前),引用LearnSwift 里面 的类时.(PS:一般引入类是继承的NSObject)
LearnSwift *learnSwift;
Test *test;
10.在-(void)viewDidLoad { }方法里面:
- (void)viewDidLoad {
[super viewDidLoad];
learnSwift = [[LearnSwift alloc]init];
[learnSwift logsth:@"asaad"];
NSLog(@"**************************************\n");
test = [[Test alloc]init];
[test log];
NSLog(@"**************************************\n");
}
打印结果如下:

11.在ViewControlle.m文件里面添加如下:

二、Swift中引入OC
直接在桥文件里面写上需要引入的类名的 .h文件即可,如下:

参考链接 :
1.http://www.jianshu.com/p/4de0dff6c182
2.http://www.jianshu.com/p/1ca12a7a816f