hushicai / hushicai.github.io

Blog
https://hushicai.github.io
27 stars 1 forks source link

react native objc与swift混编 #76

Open hushicai opened 4 years ago

hushicai commented 4 years ago

对于多targets的项目,首先修改PRODUCT MODULE NAME$(PROJECT_NAME),路径为project -> TARGET -> build settings -> PRODUCT MODULE NAME,这样可以多个targets共用Swift.h文件。

hushicai commented 4 years ago

随便添加一个swift文件,xcode会自动生成对应target的bridging文件,如果有多个target,则会生成多个bridging。

如果只想用同一个bridging,可以修改TARGET -> build settings -> Swift Compiler - General -> Objective-C Bridging Header

hushicai commented 4 years ago

确保TARGET -> build phases -> Compile Sources已经加上了该swift文件,构建成功后,xcode会自动生成一个$(SWIFT_MODULE_NAME)-Swift.h文件。

一定要确保swift文件加进了编译列表,并且项目成功构建,xcode才会生成Swift.h文件,否则会一直报Swift.h not found错误,特别是多target的场景,很容易在一个target上添加,而在另外一个target上漏掉了。

hushicai commented 4 years ago

自动生成Swift.h文件后,假设为test-Swift.h,ojbc引入swift头文件即可以调用swift:

#import "test-Swift.h"
hushicai commented 4 years ago

自动生成Bridging-Header.h文件后,假设为test-Bridging-Header.h,在该头文件中引入相应的objc头文件,swift即可以调用objc:

/// test-Bridging-Header.h
#import <React/RCTBridgeModule.h>