归档发布时,通过桥接头暴露的 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 文件中使用“Availability.h”