废话不多说,下面进行一步步 *** 作
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引用即可
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)