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
@interface UITextView (Layout)
Ou
UITextView + Layout.h
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
- (void)setImageWithURL:(NSURL *)url {
[self setImageWithURL:url placeholderImage:nil];
}
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:
*** 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) '
SOLUTION
Accédez à la recherche de paramètres de construction pour "DEAD_CODE_STRIPPING" et définissez-le sur NO.
DEAD_CODE_STRIPPING = NO
alors
créer des fichiers UITextViewWorkaround
UITextViewWorkaround.h
#import <Foundation/Foundation.h>
@interface UITextViewWorkaround : NSObject
+ (void)executeWorkaround;
@end
UITextViewWorkaround.m
#import "UITextViewWorkaround.h"
#import <objc/runtime.h>
@implementation UITextViewWorkaround
+ (void)executeWorkaround {
if (@available(iOS 13.2, *)) {
}
else {
const char *className = "_UITextLayoutView";
Class cls = objc_getClass(className);
if (cls == nil) {
cls = objc_allocateClassPair([UIView class], className, 0);
objc_registerClassPair(cls);
#if DEBUG
printf("added %s dynamically\n", className);
#endif
}
}
}
@end
l'exécuter dans le délégué de l'application
#import "UITextViewWorkaround.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[UITextViewWorkaround executeWorkaround];
return yes;
}
Compilez le code et vous aurez une application en cours d'exécution :)