美文网首页
OC和Swift混编系列一

OC和Swift混编系列一

作者: iOS寻觅者 | 来源:发表于2024-05-17 13:53 被阅读0次

场景一:主工程原本为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
    }()

相关文章

网友评论

      本文标题:OC和Swift混编系列一

      本文链接:https://www.haomeiwen.com/subject/mviifjtx.html