iOS开发技术iOS技术Swift基础

Swift与OC的相互调用

2021-12-20  本文已影响0人  萤火驻守心间

swift调用OC(底层是通过runtime调用_objc_msgSend来实现的)

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

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

1-1 1-2

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

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

let person = Person()

 person.name="hello"

 person.run()

OC调用Swift

注意:被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引用即可

上一篇下一篇

猜你喜欢

热点阅读