Расширения и категории классов Swift для классов Swift не могут иметь методы +load - программирование

Расширения и категории классов Swift для классов Swift не могут иметь методы +load

Я обновил версию Xcode 10.2 (10E125) и тестирование на устройствах (не только симулятор)

Я получаю это сообщение при запуске приложения:

objc [3297]: расширениям и категориям классов Swift для классов Swift запрещается иметь методы +load

  • Это просто не работает на устройствах с iOS 12.2. Я хотел бы знать, было ли какое-либо обновление, которое влияло на классы swift. До сих пор никто не отвечал об этом на других форумах, просто видел, что у Apple есть некоторые проблемы с другими приложениями в производстве.

-I я использую расширения быстрых классов, но я не думаю, что это проблема

  • Использование Cocoapods и Firebase зависимостей.

  • Я искал в своем проекте любые функции, которые могли бы содержать функции "загрузки", ни одной не было найдено.

Пожалуйста, помогите

4b9b3361

Ответ 1

Просто чтобы добавить решение для проектов React Native.

Эта проблема возникла из-за того, что один из наших собственных собственных модулей реагирования использовал RCT_EXPORT_MODULE() который вызывает функцию init и мы также RCT_EXPORT_MODULE() swift-код. Начиная с версии-оригинала 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 исправили проблему.

Ответ 2

На данный момент единственное решение, которое я нашел, это:

  • Загрузите предыдущую версию Xcode 10.1

Как только вы это сделаете, перестройте свой проект, и он отлично работает на любом устройстве.

Я думаю, что проблема связана со Swift 5. Что нам, вероятно, нужно сделать, это обновить все зависимости до Swift 5. На данный момент у меня нет времени, чтобы сделать это.

Если кто-нибудь найдет другое решение, дайте мне знать.

Благодарю.

Ответ 3

В моем случае единственной зависимостью, которая имеет метод +load, является RxAtomic. Который, кстати, единственный, который не обновился до текущего момента до swift 5.0. Так что я предполагаю, что эта ошибка вызвана RxSwift. И у меня также есть зависимости Swinjects, но я обновил все до последних выпусков, которые поддерживают swift 5 - это не помогло.

РЕДАКТИРОВАТЬ

Я просто открываю файл проекта Pods. Выберите RxAtomic Target. И измените пользовательское свойство SWIFT_VERSION с 5.0 на 4.2. И это работает !!!

AO2y3.png

Ответ 4

обновить до ^0.59.5 версии ^0.59.5

решил это без RCT_EXPORT_MODULE_NO_LOAD,

обновить реагирующую версию,

rm -rf node_modules
yarn add [email protected]^0.59.5

так что это обновит другие пакеты зависимостей с новой версией

Ответ 5

У меня была та же самая проблема, и все, что я сделал, было обновить стручки. Swinject pod вызывал проблемы, и после обновления до последней версии все было решено. Вы также можете попробовать настроить языковую версию Swift в Pods Targets.