congratulazione
La nuova versione di Xcode (11.2.1) è ora disponibile che è il modo migliore per sbarazzarsi di questo problema.
soluzioni alternative
@Mojtaba Hosseini la soluzione che ho proposto è stata l'aiuto e la partecipazione da parte mia ai miei colleghi sviluppatori su StackOverflow. Tu, io e tutto il resto dello sviluppatore qui già sappiamo che quando la nuova versione verrà annunciata da Apple, questo problema sarà risolto.
Ma accanto a tutto
La soluzione di cui sopra è stata definitivamente accettata da Apple Review in quanto non è coinvolta alcuna API privata. Questo approccio è molto simile alla creazione di proprietà simili
@interface UITextView (Layout)
O
UITextView + Layout.h
Quindi, quando si crea una proprietà, si utilizzano direttamente i componenti privati APPLE e li si rimodula secondo le proprie esigenze o necessità.
L'esempio semplice sono le classi AMFNetworking
- (void)setImageWithURL:(NSURL *)url {
[self setImageWithURL:url placeholderImage:nil];
}
Spero di aver finito con l'accusa
La risposta che segue è stata solo un po 'di aiuto da parte mia per consentire allo sviluppatore di continuare a sviluppare mentre inizialmente proponevamo allo sviluppatore di ripristinare Xcode. È stata una brutta pratica scaricare di nuovo Xcode da 8 GB poiché sappiamo tutti che la nuova versione di Xcode sarà rilasciata presto.
Mentre è stato risolto in Xcode 11.2.1, ho ottenuto una soluzione per Xcode 11.2 con la quale è possibile eliminare questo crash:
*** Chiusura dell'app a causa dell'eccezione non rilevata 'NSInvalidUnarchiveOperationException', motivo: 'Impossibile creare un'istanza della classe denominata _UITextLayoutView perché non è stata trovata alcuna classe denominata _UITextLayoutView; la classe deve essere definita nel codice sorgente o collegata da una libreria (assicurarsi che la classe faccia parte del target corretto) '
SOLUZIONE
Vai alla ricerca di Build Build per "DEAD_CODE_STRIPPING" e impostalo su NO
DEAD_CODE_STRIPPING = NO
Poi
creare file 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
eseguirlo nel delegato dell'app
#import "UITextViewWorkaround.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[UITextViewWorkaround executeWorkaround];
return yes;
}
Compila il codice e avrai un'app in esecuzione :)