归档发布时,通过桥接头暴露的 Objective-c 类在 swift 中不可见

Posted

技术标签:

【中文标题】归档发布时,通过桥接头暴露的 Objective-c 类在 swift 中不可见【英文标题】:Objective-c class exposed via bridging header not visible from swift when archiving release 【发布时间】:2020-06-23 10:03:52 【问题描述】:

在我的 react native 项目中,我尝试向 javascript 代码公开一个 swift 函数。它在调试模式下运行良好,但在尝试归档时,我的 swift 文件出现Use of undeclared type RCTEventEmitter 错误。

RCTEventEmitter 被导入到我的 RNUtils.m 文件和桥接头中。

所以我猜在存档的某个地方,桥接头失败了,但我不知道在哪里。 如果我要求一个不存在的导入,它会告诉我它无法编译桥接头,因此在构建过程中会考虑该文件。

// Utils.m
#import "React/RCTBridgeModule.h"
#import "React/RCTConvert.h"
#import "React/RCTEventEmitter.h"

@interface RCT_EXTERN_REMAP_MODULE(RNUtils, RNUtils, RCTEventEmitter)

@end

// Utils.swift
import Foundation

@objc(RNUtils)
class RNUtils: RCTEventEmitter 
  // my native code emitting events

// MyApp-Bridging-header.h
#ifndef MyApp_Bridging_Header_h
#define MyApp_Bridging_Header_h

#import <React/RCTBridgeModule.h>
#import <React/RCTEventEmitter.h>

#endif
react-native 0.61.5 xcode 11.5 斯威夫特 5

【问题讨论】:

【参考方案1】:

看来我需要在每个 swift 文件中添加 ìmport React`。现在存档很好。

【讨论】:

我目前正在处理同样的问题,但是“import React”会导致“No such module React”。此外,其他相关问题似乎表明,在最新版本的 react 中,所有这些都应该通过“pod install”自动处理。您是否需要做一些特别的事情来启用 React 的导入?

以上是关于归档发布时,通过桥接头暴露的 Objective-c 类在 swift 中不可见的主要内容,如果未能解决你的问题,请参考以下文章

Objective-C Swift 桥接头

在通过桥接头导入的 Objective-C 文件中使用“Availability.h”

桥接头文件找不到导入的 Objective-C 项目

桥接头文件找不到导入的 Objective-C 项目

我可以使用桥接头在基于 Swift 的项目中导入 Objective-C++ 类吗?

无法在 Swift 项目中添加 Objective C 桥接头