Swift和OC混编

Swift和OC混编

Swift语言,抱歉,博主会的不多,今天来简单的讲解一下OC与Swift的混编
做得不多,我们只要做到能相互调用就好了
就做世界上最伟大的程序Hello World

打开Xcode:

来个简单的命令行”Hello World”:

新建一个OC类:

YES Xcode自动帮我们创建桥接swift和OC的头文件:

开始写点代码叭:

HelloOC.h:

1
2
3
4
5
6
7
#import <Foundation/Foundation.h>

@interface HelloOC : NSObject

- (void)sayHelloWorld;

@end

HelloOC.m:

1
2
3
4
5
6
7
8
9
10
#import "HelloOC.h"

@implementation HelloOC

- (void)sayHelloWorld
{
NSLog(@"Hello World!");
}

@end

OCSwift-Bridging-Header.h:

1
#import "HelloOC.h"     //在swift文件中调用OC对象,需要导入

main.swift:

1
2
3
4
import Foundation

var hello = HelloOC()
hello.sayHelloWorld()

来看看目录结构,运行,没有问题

新建一个Swift类,用于在OC类中调用:

HelloSwift.swift:

1
2
3
4
5
6
7
8
9
import Foundation

class HelloSwift: NSObject {

func sayHello()
{
println("Swift Hello")
}
}

OC调用swift会生成一个隐藏的头文件,头文件名称为项目名-Swift.h
#import "OCSwift-Swift.h"导入

如果在HelloOC.h中导入该头文件会报错

在h文件中改使用@class 类名;引入

HelloOC.h:

1
2
3
4
5
6
7
8
9
10
11
12
#import <Foundation/Foundation.h>

@class HelloSwift;

@interface HelloOC : NSObject
{
HelloSwift *swift;
}

- (void)sayHelloWorld;

@end

HelloOC.m:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#import "HelloOC.h"
#import "OCSwift-Swift.h"

@implementation HelloOC

- (id)init
{
if (self = [super init]) {
swift = [[HelloSwift alloc] init];
}
return self;
}

- (void)sayHelloWorld
{
NSLog(@"Hello World!");
[swift sayHello];
}

@end

运行,没错,这样混编就搞定了

另外,该桥接的头文件,在这里配置,可以自己创建该头文件并导入

该配置指向该头文件

# swift
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×