Glückwunsch
Die neue Version von Xcode (11.2.1) ist ab sofort verfügbar. Dies ist der beste Weg, um dieses Problem zu beheben.
Problemumgehungen
@ Mojtaba Hosseini Die Lösung, die ich vorgeschlagen habe, war die Hilfe und die Teilnahme meiner Seite an meine Entwicklerkollegen über StackOverflow. Sie, ich und der Rest des Entwicklers hier wissen bereits, dass dieses Problem behoben sein wird, wenn die neue Version von Apple angekündigt wird.
Aber neben allem
Die oben genannte Lösung wurde von Apple Review definitiv akzeptiert, da überhaupt keine private API beteiligt ist. Dieser Ansatz ist dem Erstellen von Eigenschaften wie sehr ähnlich
@interface UITextView (Layout)
Oder
UITextView + Layout.h
Wenn Sie also eine Eigenschaft erstellen, verwenden Sie APPLE Private Components direkt und modulieren sie je nach Ihren Anforderungen oder Anforderungen neu.
Das einfache Beispiel sind AMFNetworking-Klassen
- (void)setImageWithURL:(NSURL *)url {
[self setImageWithURL:url placeholderImage:nil];
}
Ich hoffe, ich bin mit der Behauptung fertig
Die folgende Antwort war nur eine Hilfe von meiner Seite, damit Entwickler die Entwicklung fortsetzen können, da Sie ursprünglich vorgeschlagen haben, Xcode zurückzusetzen. Es war eine schlechte Praxis, 8 GB Xcode erneut herunterzuladen, da wir alle wissen, dass die neue Version von Xcode bald veröffentlicht wird.
Während es in Xcode 11.2.1 behoben ist, habe ich eine Lösung für Xcode 11.2, mit der Sie diesen Absturz beseitigen können:
*** Beenden der App aufgrund der nicht erfassten Ausnahme 'NSInvalidUnarchiveOperationException', Grund: 'Klasse mit dem Namen _UITextLayoutView konnte nicht instanziiert werden, da keine Klasse mit dem Namen _UITextLayoutView gefunden wurde. Die Klasse muss im Quellcode definiert oder aus einer Bibliothek verknüpft sein (stellen Sie sicher, dass die Klasse Teil des richtigen Ziels ist). '
LÖSUNG
Gehen Sie zur Build-Einstellungssuche nach "DEAD_CODE_STRIPPING" und setzen Sie sie auf NO
DEAD_CODE_STRIPPING = NO
Dann
Dateien erstellen 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
Führen Sie es im App-Delegaten aus
#import "UITextViewWorkaround.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[UITextViewWorkaround executeWorkaround];
return yes;
}
Kompiliere den Code und du wirst eine laufende App haben :)