Après la mise à niveau vers Xcode 11.2 à partir de Xcode 11.1, mon application se bloque:
*** Arrêt de l'application en raison d'une exception non interceptée 'NSInvalidUnarchiveOperationException', raison: 'Impossible d'instancier la classe nommée _UITextLayoutView car aucune classe nommée _UITextLayoutView n'a été trouvée; la classe doit être définie dans le code source ou liée à partir d'une bibliothèque (assurez-vous que la classe fait partie de la bonne cible) '
Pourquoi cela arrive-t-il? Comment puis-je éviter ce plantage?
Réponses:
Félicitations
La nouvelle version de Xcode (11.2.1) est disponible maintenant, ce qui est le meilleur moyen de se débarrasser de ce problème.
Solutions de contournement
@Mojtaba Hosseini la solution que j'ai proposée était de l'aide et de la participation de mon côté à mes collègues développeurs via StackOverflow. Vous, moi et tout le reste du développeur ici savons déjà que lorsque la nouvelle version sera annoncée par Apple, ce problème aura disparu.
Mais à côté de tout
La solution susmentionnée a été définitivement acceptée par Apple Review car aucune API privée n'est impliquée. Cette approche est très similaire à la création de propriété comme
Ou
Ainsi, lorsque vous créez une propriété, vous utilisez directement les composants privés APPLE et les modifiez à nouveau selon vos besoins ou vos exigences.
L'exemple simple est les classes AMFNetworking
J'espère que j'en ai fini avec l'allégation
La réponse ci-dessous était juste une aide de mon côté pour permettre au développeur de continuer à développer comme vous, nous avons initialement proposé au développeur de restaurer Xcode. Ce fut une mauvaise pratique de télécharger à nouveau 8 Go de Xcode car nous savons tous que la nouvelle version de Xcode sera bientôt disponible.
Bien qu'il soit corrigé dans Xcode 11.2.1, j'ai une solution pour Xcode 11.2 par laquelle vous pouvez vous débarrasser de ce plantage:
SOLUTION
Accédez à la recherche de paramètres de construction pour "DEAD_CODE_STRIPPING" et définissez-le sur NO.
alors
UITextViewWorkaround.h
UITextViewWorkaround.m
Compilez le code et vous aurez une application en cours d'exécution :)
la source
Mise à jour: corrigé! 🎉🎊
La SEULE solution consiste à mettre à jour
Ce bogue est corrigé dans Xcode 11.2.1. Vous pouvez donc le télécharger et l'utiliser à partir d'ici.
Xcode 11.2 est déconseillé par Apple le 5 novembre 2019
si vous essayez de soumettre votre application qui construit avec Xcode 11.2 à l'AppStore, vous serez rejeté:
Avertissement de fonctionnement de l'App Store Connect
Donc, toutes les solutions de contournement effectuées avec le Xcode 11.2 sont inutiles
C'est un bogue pour Xcode 11.2, et corrigé dans Xcode 11.2.1.
Solutions)
Faire reculer le précédent à Xcode version la version de:Rollback est plus une option et AppleStore rejettera toute construction avec Xcode ci - dessous 11.2.1 un coup d' oeil à ceNotez que vous devez utiliser Safari pour le télécharger et vous devez d'abord vous connecter au portail des développeurs Apple .
Vous pouvez trouver toutes les autres versions de Xcode et d'autres liens de ressources (y compris les versions de version et bêta) ici à https://developer.apple.com/download/moreLa solution
C'est une solution de contournement très difficile mais qui fonctionne. Remplacez tous les
UITextView
s dans le storyboard s et Xib s par la version de code pur .Notez que ce bug est trouvé et corrigé par Apple
Plus tôt également, le bug a été confirmé par Apple Staff edford
Pour ceux avec iOS 13.2 et ne pouvant plus utiliser Xcode 11.1:
Pour ceux qui ont un storyboard:
UITextView
UITextView
objetsPour ceux qui sont à l'aise avec la méthode swizzling (Objc et comportement dynamique)
Dirigez-vous vers la réponse @aftab muhammed khan pour Objective-C et @MikRo pour la version adaptée de SwiftNe le faites plus:
Même si ces deux dernières solutions de contournement n'utilisent pas l'API privée d'Apple , elles seront rejetées dans l'AppStore car Apple n'acceptera pas les versions avec les versions Xcode sous 11.2.1 !
Et encore une fois:
Xcode 11.2 est déconseillé par Apple le 5 novembre 2019
la source
CMD + Shift + K
)Le problème a été résolu dans Xcode 11.2.1.
EDIT: comme le correctif est maintenant publié, vous devez passer à cette version Xcode et commenter cette solution de contournement. Comme l'a mentionné Mojtaba Hosseini dans sa réponse:
Pour le temps jusqu'à ce que le correctif soit publié par Apple, c'était une bonne solution de contournement pour continuer à développer et à tester.
Pour Xcode 11.2, basé sur l'idée d'Aftab Muhammed Khan et avec l'aide de John Nimis, je viens de tester le code suivant.
Aucun changement dans les fichiers du storyboard nécessaire!
Modifié mon fichier AppDelegate.swift et ajouté cette classe
et dans l'appel délégué pour "didFinishLaunchingWithOptions" appeler la solution de contournement
la source
J'ai adapté la solution Obj-C de khan à Swift :
Appelez à la fin de
didFinishLaunchingWithOptions
dansAppDelegate
.Merci @Aftab!
la source
didFinishLaunchingWithOptions
Une solution plus rapide:
Ajoutez ce code quelque part, puis remplacez toutes les instances de storyboard dans
FixedTextView
.Remarque: vous perdrez tous les attributs créés dans les storyboards. Cela pourrait avoir de sérieuses implications (par exemple, configuration des délégués, taille, etc.)
la source
Solution mise à jour : mise à jour vers Xcode 11.2.1 . Cela fonctionne sur les appareils iOS 11, 12 ou 13 pour moi.
Reportez-vous à la documentation d' Apple. Cette mise à jour corrige un problème critique pouvant entraîner le blocage des applications utilisant UITextView.
Ancienne solution: Xcode 11.1 téléchargé sur https://developer.apple.com/download/more/ Le retour de 11.2 à 11.1 a corrigé le plantage.
De plus, pour moi, même avec Xcode 11.2, lorsque j'ai mis à niveau mon iPhone vers 13.2, cela a corrigé le plantage.
la source
11.2.1 Les semences GM résolvent ce problème
(et il peut être utilisé pour publier sur l'App Store)
Accédez à https://developer.apple.com/download/ . Télécharger la graine Xcode 11.2.1 GM
Les notes de version confirment qu'il corrige cette erreur:
la source
Vous pouvez aller télécharger la dernière version bêta de Xcode (GM 11.2.1) sur le site Web des développeurs Apple.
Ici le lien direct
la source
Amélioration de la réponse @garafajon. Pour moi, cela fonctionne dans la plupart des cas.
la source
En tant que solution «rapide», vous pouvez ajouter le
UITextView
directement à partir du code et non via IB. Au moins, cela a fonctionné pour moi. Bien que de mon point de vue, il est préférable de revenir au Xcode précédent / d'attendre le nouveau.la source
C'est un bug avec Xcode 11.2. Les vues de texte sous-classées se bloquent sur tous les appareils sur lesquels la nouvelle version iOS (13.2) n'est pas installée. Vous feriez probablement mieux de ne pas créer de version avec cette version.
Tu peux maintenant:
la source
J'ai utilisé une solution de contournement réussie, mais c'était douloureux. Voici le processus que j'ai suivi:
TextView
. Dans mon cas:id
(dans mon cas:id="782-j1-88c"
)Faire cela a résolu le problème pour moi sans perte de fonctionnalité souhaitée. Heureusement, je n'avais qu'un seul
UITextView
à remplacer. Sinon, cela devient intenable.la source
J'ai eu le même problème que je viens de mettre à niveau mon Xcode 11.2 vers 11.2.1, cela a bien fonctionné.
Après la mise à niveau, j'ai testé le même sur iOs 13 et iOS 12 et cela fonctionnait bien.
la source
1. Problème:
Il y a un problème avec Xcode 11.2 dans lequel les storyboards contenant un UITextView entraîneront le blocage de l'application sur les versions du système d'exploitation antérieures à iOS 13.2 si elles sont compilées avec Xcode 11.2.
Consultez cette documentation Apple .
2. Solution:
La seule solution est de mettre à jour votre Xcode vers 11.2.1 ou 11.3.
Xcode 11.2.1 a été particulièrement publié pour résoudre ce problème de plantage.
Consultez cette documentation Apple.
3. Suggestion:
Je vous suggère d'utiliser la dernière version de Xcode 11.3 car cela prend en charge le développement d'applications pour iOS 13.3 et il existe également de nombreuses nouvelles fonctionnalités. Consultez cette documentation Apple .
la source
Ce problème a été corrigé dans Xcode version 11.2.1 et signalé dans les notes de version:
la source