23

我已更新 Xcode 版本 10.2 (10E125) 并在设备上进行测试(不仅是模拟器)

执行应用程序时收到此消息:

objc[3297]:Swift 类扩展和 Swift 类上的类别不允许有 +load 方法

  • 它只是不适用于装有 iOS 12.2 的设备。我想知道是否有任何影响 swift 类的更新。到目前为止,在其他论坛上还没有关于这个问题的答案,只是看到苹果在生产中的其他应用程序也存在一些问题。

-我正在使用 swift 类的扩展,但我认为这不是问题

  • 使用 Cocoapods 和 Firebase 依赖项。

  • 我在我的项目中搜索了任何可能包含“加载”函数的函数,但没有找到。

请帮忙

4

6 回答 6

7

只是为 React Native 项目添加一个解决方案。

发生此问题是因为我们的一个自定义反应原生模块正在使用 RCT_EXPORT_MODULE()调用该init函数的宏,并且我们还包含了 swift 代码。从 react-native 版本 0.59.3 开始,有一个新的宏RCT_EXPORT_MODULE_NO_LOAD(js_name, objc_name)可以避免调用init. 替换RCT_EXPORT_MODULE()RCT_EXPORT_MODULE_NO_LOAD(js_name, objc_name)更新以响应本机版本 0.59.3 解决了该问题。

于 2019-04-09T00:02:23.063 回答
4

目前快速修复:

完成后,重新构建您的项目,它可以在任何设备上正常工作。

我认为问题与 Swift 5 有关。我们可能需要做的是将所有依赖项更新到 Swift 5。目前我没有时间这样做。


长期修复:更新您的 pod 并慢慢迁移到 swift5。

产生更多问题的 pod 是:带有 SwinjectStoryboard 的 Swinject 和 RxOptional。

于 2019-04-01T08:23:50.073 回答
4

就我而言,唯一具有 +load 方法的依赖项是 RxAtomic。顺便说一句,这是唯一一个没有更新到当前时刻到 swift 5.0 的版本。所以我认为这个错误是由 RxSwift 引起的。而且我也有 Swinjects 依赖项,但都更新到支持 swift 5 的最新版本 - 它没有帮助。

编辑

我只是打开 Pods 项目文件。选择 RxAtomic 目标。并将用户定义的属性“SWIFT_VERSION”从 5.0 更改为 4.2。它有效!

于 2019-04-01T22:02:42.660 回答
3

升级到 react-native 版本^0.59.5

没有解决它RCT_EXPORT_MODULE_NO_LOAD

更新 react-native 版本,

rm -rf node_modules
yarn add react-native@^0.59.5

所以这将使用新版本更新其他依赖包

于 2019-06-03T11:54:45.680 回答
0

我遇到了同样的问题,我所做的只是更新 pod。Swinject pod 引起了问题,更新到最新版本后,一切都解决了。您也可以尝试在 Pods Targets 中调整 Swift 语言版本。

于 2019-07-24T10:18:39.397 回答
-1

• 降级到Xcode 10.0解决了我的问题。您可以在Apple Developers 的更多下载处下载它

于 2019-04-24T10:16:04.073 回答