web-dev-qa-db-fra.com

Swift extensions et catégories de classes sur Swift les classes ne sont pas autorisées à avoir + de méthodes de chargement)

J'ai mis à jour la version 10.2 de Xcode (10E125) et testé sur des appareils (pas seulement un simulateur)

Je reçois ce message lorsque j'exécute l'application:

objc [3297]: Swift extensions et catégories de classe sur Swift ne sont pas autorisées à avoir des méthodes + load)

  • Cela ne fonctionne tout simplement pas sur les appareils avec iOS 12.2. Je voudrais savoir s'il y avait une mise à jour qui affectait les classes Swift. Jusqu'à présent, aucune réponse à ce sujet dans d'autres forums n'a vu que Apple a quelques problèmes avec d'autres applications en production également.

-J'utilise des extensions de classes Swift mais je ne pense pas que ce soit le problème

  • Utilisation des dépendances Cocoapods et Firebase.

  • J'ai recherché dans mon projet toutes les fonctions pouvant contenir des fonctions de "chargement", aucune trouvée.

S'il vous plaît un peu d'aide

22
Daniel Bastidas

Juste pour ajouter une solution pour React Projets natifs.

Ce problème s'est produit car l'un de nos modules natifs de réaction personnalisés utilisait la macro RCT_EXPORT_MODULE() qui appelle la fonction init et nous incluions également Swift code. Depuis réagir-natif version 0.59.3, il y a une nouvelle macro RCT_EXPORT_MODULE_NO_LOAD(js_name, objc_name) qui évite l'appel à init. Remplacer RCT_EXPORT_MODULE() par RCT_EXPORT_MODULE_NO_LOAD(js_name, objc_name) et mettre à jour vers react native version 0.59.3 a résolu le problème.

7
Ethan Worley

Dans mon cas, la seule dépendance qui a la méthode + load est RxAtomic. Ce qui, soit dit en passant, est le seul qui n'a pas été mis à jour pour l'instant Swift 5.0. Je suppose donc que ce bogue provoqué par RxSwift. Et j'ai aussi des dépendances Swinjects, mais mises à jour tout aux dernières versions qui prennent en charge Swift 5 - cela n'a pas aidé.

MODIFIER

Je viens d'ouvrir le fichier de projet Pods. Sélectionnez Cible RxAtomic. Et changez la propriété définie par l'utilisateur 'Swift_VERSION' de 5.0 à 4.2. Et il fonctionne!!!

4
Nikita Haiko

Pour le moment, la solution rapide:

  • Téléchargez la version précédente de Xcode 10.1

Une fois que vous avez fait cela, reconstruisez votre projet et cela fonctionne très bien sur n'importe quel appareil.

Je pense que le problème est lié à Swift 5. Ce que nous aurions probablement besoin de faire est de mettre à jour toutes les dépendances à Swift 5. Pour le moment je ne ' Je n'ai pas le temps de le faire.


La solution miracle: mettre à jour vos pods et migrer lentement vers Swift5.

Le pod qui posait le plus de problèmes était: Swinject avec SwinjectStoryboard et RxOptional.

4
Daniel Bastidas

mise à niveau vers la version native de react ^0.59.5

résolu sans RCT_EXPORT_MODULE_NO_LOAD,

pour mettre à jour la version native de react,

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

donc cela mettra à jour les autres packages de dépendances avec la nouvelle version

2
MustafaSkir

J'ai eu le même problème et je n'ai fait que mettre à jour les pods. Swinject pod posait problème et après la mise à jour vers la dernière version, tout a été résolu. Vous pouvez également essayer d'ajuster Swift version linguistique dans Pods Targets.

0
Mile Dev