OC 中使用 Swift

OC 中使用 Swift,第1张

很久以前 OC中引用Swift库 直接简单的配置一下就好了。直到前几游尺天OC再次调用Swift库的时候凭借之前的方法一直找不到我们创建的那个类,谷歌,百度 查阅很多资料还是一无所获。在一个交流群里有人告诉我说 不知从什么时候起 OC引入Swift必须手动创一个 以 工程名字-Swift.h的文件。然后在使用的地方引入这个文件。之后再把这个文件删除就可以了。

废话不多说,下面进行一步步 *** 作

1,配置工程 在 targets ->Build Settings ->Packaging  中设置Defines Module 为YES

2,创建Swift文件

3,在所需要的地方引入。

然并卵,依旧找不到这个Test。

4,重点来了,创建一个  工程名-Swift.h  文件 (记住,名字一定不要出错)

5,在需要的地方引入这个OCreferenceSwift-Swift.h文件

然而你还会发现  现在并没有什么卵用  依旧报错,但是别着急  你离成功只差那么一小步。删除 OCreferenceSwift-Swift.h文件然后clean一下工程就完美解决了,乱闹如图

总结: 为什么会之前不要创建 OCreferenceSwift-Swift.h 而现在需要了呢?据了解之前低版本的Xcode默认是创哗磨罩建了一个 工程名-Swift.h 不需要我们再次创建就可以  但是升级更高Xcode之后 就没有默认创建这么一说了。扯淡的苹果  扯淡的Xcode。

一、配置Defines Module = YES

二、创建新的swift文件,目的是让xcode帮你配置桥接文件

选择Creat Bridging Header

配置完成之后,Xcode会自动帮你生成一个OCToSwift-Bridging-Header.h文件,内部可以导入OC文件,这样Swift中就可以使用OC的文件,使用方式如下图

三轮罩、在OC文件中导入文件#import "OCToSwift-Swift.h"(#import "你的工程名-Swift.h"),导入之前需要build一下,否则可能找不到OCToSwift-Swift.h文件

下面是使用实例:

MySwift文件如下图,需要在类和函数前面添加@obcj才能被OC的类调用,同时Swift类需要继承自NSObject

大家有什么不懂的,带燃或者配置错误的都可以留言,小弟会竭尽所能解答您的问题。

写的不对的地方也希望大家指正。

下一篇: 在Swift项目中使用OC 大家有兴趣可以看一蠢桐虚下

如下图1-1、1-2 所示,创建person的oc类时(可选择xcode自动创建桥接文件洞绝,也可手动创建桥接文件并指定路径)

1、Xcode会自动帮我们生成Test(项目名)-Bridging-Header.h文件,并且会在Build Setting中指定桥接文件路径

2、在桥接文件中#import需要给swift使用的类

3、接下来在swift类中就可直接使用Person了

注意:被oc调用的swift类需要继承自NSObject, 比方说如果继承自NSProxy将消息转发到真正的target的代理类,就不能被oc调拍搜用

原因:在oc中的类是依赖runtime机制的,而runtime机制需要isa指针,只有继承NSObject才能获得isa指针

1、创建swift类并用@objc修饰想要暴露给oc的属性或方法,全部暴露可直接用 @objcMembers修饰类

2、xcode默认生成了用于OC调用swift的头文件纳贺姿Test(项目名)-Swift.h,在oc类中#import引用即可


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12228599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存