刚好看书的时候看到这里,网上关于桥接的描述也是挺乱的,当年还比较菜鸟的时候查找这个问题也不是没被坑过,顺便记录一下方便一下其他人。
一、设置桥接文件
不管是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文件里进行方法声明(废话)。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。