美文网首页iOS各种疑难杂症
iOS-OC和Swift相互混合开发(OC&Swift混编)

iOS-OC和Swift相互混合开发(OC&Swift混编)

作者: 重识 | 来源:发表于2020-02-06 18:01 被阅读0次

    一、引言

    在ios的OC和Swift混合开发无非是2种,一种是在OC的项目中使用Swift语言开发,这里就需要创建Swift文件(或者引用Swift写的的第三方库),另一种是在Swift项目中使用OC语言开发,这里就需要创建OC文件,(或者引用OC写的的第三方库)

    1、OC的Project使用Swift文件开发

    首先我们在一个已有的OC的项目中,创建一个Swift文件

    这里Xcode就会自动提示我们如:图1

    图1

    Would you like to configure an Objective-C bridging header?

    Adding this file to ocProjectUseSwift will create a mixed Swift and Objective-C target. Would you like Xcode to automatically configure a bridging header to enable classes to be accessed by both languages?

    提示我们创建一个桥接的头文件,当我点击 “ Create  Bridging Header”,Xcode就给我们自动创建,自动创建的规则是:项目名+ "-Bridging-Header.h" 如图2

    图2

    同时在项目中创建一个Swift文件

    然后在在 targets -> Build Settings -> Packaging 中设置Defines Module 为YES

    设置完后开始使用,怎么在oc中使用Swift的类呢?

    重点: 在文件中引用 #import "ocProjectUseSwift-Swift.h"  记住不是我创建的SecondVC.swift,是“项目名-Swift.h"文件名 ,引入这个文件就引入了所有的Swift文件内的类、方法、属性

    说明:这个文件是系统自动创建,自动添加所有我们创建的Swift的类的方法和属性

    前提是要在方法和属性前面要加@objc 如图3:

    图3

    用@objc声明好之后,在我们引用的是“项目名-Swift.h"文件名的 #import "ocProjectUseSwift-Swift.h" 内就看到有标记了如图4

    图4

    这里分了3块,红色和绿色标记框内是我们自己标记的oc可用的属性和方法,蓝色框内是系统自己生成的oc可以初始化方法

    具体使用就在oc文件中,如图5:

    图5

    此事,在这个OC创建的项目中,我们创建的Swift文件怎么使用OC创建的类呢?

    这里就用到我们创建的桥接头文件了,在图2中的桥接头文件,引入OC的头文件,如图6

    图6

    就这样很简单,所以Swift文件的类都可以使用这个OC文件内的类了,使用起,和OC调用OC的类一样,如如图7和图8

    图7 图8

    2、Swift的Project使用OC文件开发

    Swift的项目中,第一次创建OC的文件,此时系统会自动帮我们创建桥接头文件,如图9

    图9

    然后就有了和图2一样的桥接头文件,剩下的就和图6一样,在桥接头文件内引入头文件,即可使用OC的类,第三方库如果也是OC写的,在引入的时候也自动会加这个桥接头文件,当然一个项目只能加一次,加过的就不需要加了

    相关文章

      网友评论

        本文标题:iOS-OC和Swift相互混合开发(OC&Swift混编)

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