OC和Swift混编系列一

场景一:主工程原本为oc编写,在主工程添加swift的文件

1、创建Swift的vc

正常创建文件,语言选swift


image.png

2、点击next

image.png

3、点击Create bridging Header,会自定生成以“项目名称-Bridging-Header.h"文件,如下图:

image.png

如果你点击Dont create,后面又想oc调用swift,可以手动去到build setting里创建,如下图:


Snip20240518_84.png

4、OC使用Swift文件

导入头文件,在要使用swift的文件的地方都导入此头文件,或者将此头文件放入pch里面,即可使用swift的文件

#import "AllTest-Swift.h" //项目名称-Swift.h

点击进去,可以看到我刚刚建的文件的,如下所示,有初始化的方法,和我暴露在外面的方法~所有swift文件都会在这个文件里面被“转化”成OC,如下图


image.png

5、oc里面调用swift,像调用oc一样,完全看不出来。

- (void)jumpSwiftVC {
    MySwiftViewController *swiftVC = [[MySwiftViewController alloc] init];
    [swiftVC helloOC];
    [self.navigationController pushViewController:swiftVC animated:YES];
}

6、swift方法想被oc调用,前面需带objc

class MySwiftViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    @objc public func helloOC (){
        print("您好oc,我是swift类")
    }
}

场景二:Swift里面使用oc的view

1、将oc的view放入之前系统创建的bridgeHeader里面

image.png

2、swift里面使用如下,像是swiftView一样,正常使用

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(ocView)
        // Do any additional setup after loading the view.
    }
    
    lazy var ocView: MyOCView = {
        let view = MyOCView(frame: CGRectMake(10, 100, 100, 100))
        return view
    }()
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为什么要选择Swift 从2014年苹果推出Swift1.0到今年9月份的Swift5.1已经过去了5年,平均每年...
    quantiza阅读 11,827评论 1 17
  • 前言: Swift语言出来后,可能新的项目直接使用Swift来开发,但可能在过程中会遇到一些情况,某些已用OC写好...
    疯狂的电脑阅读 2,353评论 0 9
  • 一、OC项目里面使用Swift文件 1、在OC项目里面添加一个swift类 创建一个swift类,Language...
    西门淋雨阅读 291评论 0 1
  • 一、创建桥接文件 下面我们先建个Objc的工程,在Objc工程中新建Swift文件时,(或者在Swift工程新建O...
    海岸没有沙阅读 832评论 0 0
  • 概述 利用runtime特性实现iOS项目的组件化开发,是由@casatwy大神提出来的,在他的博客中具体介绍...
    Mr杰杰阅读 1,640评论 2 9