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

最后更新于:2022-04-01 11:39:35

1、oc工程调用swift-----自动创建桥接头文件 创建一个oc工程: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-05_572b19f4a5341.jpg) 设置Product Module Name = 工程名 ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-05_572b19fbc037c.jpg) 创建一个swift文件: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-05_572b19fc0443b.jpg) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-05_572b19fc52a3a.jpg) 点击自动创建桥接头文件: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-05_572b19fc9a0d1.jpg) 设置Objective-C Bridging Header 如下图: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-05_572b19fcc7bbf.jpg) 至此,我们可以在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类头文件在桥接头文件中引入即可, ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-05_572b19fd130d7.jpg) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-05_572b19fd38a01.jpg) 2、oc工程调用swift-----手动创建桥接头文件 首先创建一个oc工程,与上面相同 然后创建一个swift文件,但是不选择创建桥接头文件,如图: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-05_572b19fd7691c.jpg) ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-05_572b19fda7337.jpg) 然后手动创建桥接头文件,就相当于创建一个普通的头文件一样,只是命名一定要严格按照规则: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-05_572b19fdd5f1c.jpg) 工程设置中指定桥接头文件: ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-05_572b19fe2a110.jpg) 经测试,oc引用swift或者swift引用oc都是可以的,测试方法与上面相同,这里不再赘述。 3、swift工程调用-----自动创建桥接头文件 和 手动创建桥接头文件,基本与上面操作一直,不再详述 其实桥接头文件里面引入oc头文件,是为了swift可以访问oc文件, 在oc中引入   工程名-swift.h   文件  是为了oc可以访问swift,但这个文件是不可见的,不过可以通过command+鼠标左键查看该文件
';