iOS混编之--OC调用Swift

如果我们的工程是OC创建的这时候想要使用Swift写的一个第三方,这时候就要使用混编了,当我们创建Swift类的时候会有一个提示,问我们要不要创建一个桥接头文件,一般选择为创建

iOS混编之--OC调用Swift_第1张图片
询问是否创建桥接头文件

创建后工程中就会有一个桥接的头文件

iOS混编之--OC调用Swift_第2张图片
桥接的头文件

然后随意在Swift文件中写一个函数

import UIKit

class SwiftClass: NSObject {
    func sayHello(name :String) -> String {
        return name + "sayHello";
    }
}

在OC类里面调用Swift的方法首先要配置一下工程,在“Build Setting”->"Product Module Name"中添加工程名

iOS混编之--OC调用Swift_第3张图片
工程配置

重点:在要调用Swift的方法的类中引入

import "工程名-Swift.h"

引入这个类就引入了所有的Swift类
然后就可以调用Swift里面的方法了

#import "ViewController.h"
//引入这个类就引入了所有的Swift类
#import "OCdiaoSwift-Swift.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
 
    SwiftClass *sc = [[SwiftClass alloc] init];
    //系统已经把Swift方法转化为了OC方法
    NSString *str = [sc sayHelloWithName:@"CF"];
    NSLog(@"%@",str);
}
iOS混编之--OC调用Swift_第4张图片
结果显示

多说一句:
凡是用Swift写的类,如果不继成自NSObject或NSObject 的派生类,那么编译后将不会生成对应的转换类。从而使得OC 中找不到相应的声明。
我们可以进去看一下我们包含的“工程名-Swift.h”
可以看到苹果是怎么做的,是自动生成了对应的OC代码


iOS混编之--OC调用Swift_第5张图片

你可能感兴趣的:(iOS混编之--OC调用Swift)