Расширения и категории классов Swift для классов Swift не могут иметь методы +load
Я обновил версию Xcode 10.2 (10E125) и тестирование на устройствах (не только симулятор)
Я получаю это сообщение при запуске приложения:
objc [3297]: расширениям и категориям классов Swift для классов Swift запрещается иметь методы +load
- Это просто не работает на устройствах с iOS 12.2. Я хотел бы знать, было ли какое-либо обновление, которое влияло на классы swift. До сих пор никто не отвечал об этом на других форумах, просто видел, что у Apple есть некоторые проблемы с другими приложениями в производстве.
-I я использую расширения быстрых классов, но я не думаю, что это проблема
-
Использование Cocoapods и Firebase зависимостей.
-
Я искал в своем проекте любые функции, которые могли бы содержать функции "загрузки", ни одной не было найдено.
Пожалуйста, помогите
Ответы
Ответ 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
На данный момент единственное решение, которое я нашел, это:
Как только вы это сделаете, перестройте свой проект, и он отлично работает на любом устройстве.
Я думаю, что проблема связана со Swift 5. Что нам, вероятно, нужно сделать, это обновить все зависимости до Swift 5. На данный момент у меня нет времени, чтобы сделать это.
Если кто-нибудь найдет другое решение, дайте мне знать.
Благодарю.
Ответ 3
В моем случае единственной зависимостью, которая имеет метод +load, является RxAtomic. Который, кстати, единственный, который не обновился до текущего момента до swift 5.0. Так что я предполагаю, что эта ошибка вызвана RxSwift. И у меня также есть зависимости Swinjects, но я обновил все до последних выпусков, которые поддерживают swift 5 - это не помогло.
РЕДАКТИРОВАТЬ
Я просто открываю файл проекта Pods. Выберите RxAtomic Target. И измените пользовательское свойство SWIFT_VERSION с 5.0 на 4.2. И это работает !!!
Ответ 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.
Ответ 6
• Переход на Xcode 10.0 решил проблему в моем случае. Вы можете скачать его в разделе "Дополнительные материалы для разработчиков Apple".