“EXAppDelegateWrapper”没有可见的@interface声明选择器“application:openURL:options:”

问题描述 投票:0回答:1

我正在将 Expo 应用程序从 React Native 0.63 升级到 0.71,并在我的 AppDelegate.m 文件中遇到此错误。

// Linking API
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  // error below
  return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options];
}

// Universal Links
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
  BOOL result = [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler];
  return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler] || result;
}

@end

我对 Objective C 不太熟悉,所以我不确定如何解决这个问题。错误发生在注释“error below”下方的行,错误如下

No visible @interface for 'EXAppDelegateWrapper' declares the selector 'application:openURL:options:'

ios swift objective-c react-native appdelegate
1个回答
0
投票

您是否尝试过在 xcode 中将 AppDelegate.m(一个“m”)文件重命名为 AppDelegate.mm(两个“m”)?

从 React Native 0.68.2 升级到 0.70.8 以及从 Expo 46 升级到 47 时,我遇到了类似的错误:

no visible @interface for 'EXAppDelegateWrapper' declares the selector 'application:didFinishLaunchingWithOptions:'

将我的 AppDelegate.m 文件重命名为 .mm 就成功了。

两个文件扩展名之间的主要区别是 AppDelegate.mm 允许您包含 Objective-C、C++ 或 Objective-C++,但 AppDelegate.m 只允许 Objective-C 代码。

很可能

EXAppDelegateWrapper
(来自 expo-modules-core)已更新为包含 C++ 或 ObjectiveC++,这就是在我的情况下使用 AppDelegate.m 文件构建失败的原因。

© www.soinside.com 2019 - 2024. All rights reserved.