oc与swift混编,OC调用swift,swift调用OC

1、oc工程调用swift-----自动创建桥接头文件

创建一个oc工程:

oc与swift混编,OC调用swift,swift调用OC_第1张图片


设置Product Module Name = 工程名



创建一个swift文件:

oc与swift混编,OC调用swift,swift调用OC_第2张图片

oc与swift混编,OC调用swift,swift调用OC_第3张图片

点击自动创建桥接头文件:



设置Objective-C Bridging Header 如下图:



至此,我们可以在oc中调用swift了

测试代码:


import Foundation

class Student: NSObject {
    var name : String = "dzl"
    var age : Int = 22
}

在oc中引入头文件  "工程名-swift.h" 就可以使用swift中的类了

注:这个头文件是不可见的

#import "ViewController.h"

#import "OCuseSwift1-swift.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    Student * s1 = [[Student alloc] init];
    NSLog(@"%@", s1.name);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

输出:

2015-11-13 10:01:32.250 OCuseSwift1[1040:20007] dzl

此时swift也是可以引用OC的,只需将swift需要使用的oc类头文件在桥接头文件中引入即可,

oc与swift混编,OC调用swift,swift调用OC_第4张图片


oc与swift混编,OC调用swift,swift调用OC_第5张图片




2、oc工程调用swift-----手动创建桥接头文件


首先创建一个oc工程,与上面相同

然后创建一个swift文件,但是不选择创建桥接头文件,如图:

oc与swift混编,OC调用swift,swift调用OC_第6张图片


oc与swift混编,OC调用swift,swift调用OC_第7张图片


然后手动创建桥接头文件,就相当于创建一个普通的头文件一样,只是命名一定要严格按照规则:

oc与swift混编,OC调用swift,swift调用OC_第8张图片


工程设置中指定桥接头文件:

oc与swift混编,OC调用swift,swift调用OC_第9张图片


经测试,oc引用swift或者swift引用oc都是可以的,测试方法与上面相同,这里不再赘述。



3、swift工程调用-----自动创建桥接头文件 和 手动创建桥接头文件,基本与上面操作一直,不再详述




其实桥接头文件里面引入oc头文件,是为了swift可以访问oc文件,

在oc中引入   工程名-swift.h   文件  是为了oc可以访问swift,但这个文件是不可见的,不过可以通过command+鼠标左键查看该文件



你可能感兴趣的:(Swift调用OC,oc与swift混编,OC调用swift,桥接头文件)