刚好看书的时候看到这里,网上关于桥接的描述也是挺乱的,当年还比较菜鸟的时候查找这个问题也不是没被坑过,顺便记录一下方便一下其他人。

一、设置桥接文件

不管是objective-c调用swift,还是swift调用objective-c,都需要创建桥接文件,通过桥接文件实现两者的相互调用。
当我们引入oc或者swift进入另一个语言的项目的时候系统会提示是否自动创建桥接文件,此时可直接创建。
但除此之外我们也可以选择手动创建。此时需要我们在新建文件里选择Header File,点击确认创建桥接文件,桥接文件名字一般为:ProjectName-Bridging-Header.h。然后在Build settings里搜索bridging,找到Objective-C Bridging Header的选项,将该文件的路径填写进去,或者直接拉入。这里的路径最好选择相对路径的形式(ProjectName/BridgingFileName.h)。
ProjectName为你项目的项目名,BridgingFileName为桥接文件的名字。

二、桥接方法

oc项目调用swift文件

oc项目针对swift文件会自动创建ProjectName-Swift.h文件,该文件不需要我们去做更改,所以当我们设置完桥接文件之后,只需要在要调用的文件处import该头文件即可,即:import <ProjectName-Swift.h>,其中ProjectName为该项目的工程名。引入该头文件后,即可调用Swift对应的类和方法。

注意点:引入的swift文件需要调用的类和方法需要进行修饰,然后oc项目才能调用。可使用@objcMembers直接修饰类,或者也可以使用@objc分别修饰想要调用给oc的方法和属性,然后oc项目就可调用swift的相关方法了。

swift项目调用oc文件

swift项目调用oc文件更为简单,只需要将oc类的头文件导入桥接文件即可,需要调用哪个oc文件就import哪个头文件(#import "ClassName.h")进去。
swift项目调用oc的类和方法不需要引入头文件,所以设置完之后可以直接在swift中直接调用oc方法。

注意点:需要被调用的oc文件的方法需要写在.h文件里进行方法声明(废话)。


Lynx
206 声望3 粉丝

步步