Enhorabuena
La nueva versión de Xcode (11.2.1) está disponible ahora, que es la mejor manera de deshacerse de este problema.
Soluciones alternativas
@Mojtaba Hosseini, la solución que propuse fue de la ayuda y la participación de mi parte a mis colegas desarrolladores sobre StackOverflow. Usted, yo y el resto del desarrollador aquí ya sabemos que cuando Apple anuncie la nueva versión, este problema desaparecerá.
Pero al lado de todo
La solución mencionada anteriormente fue definitivamente aceptada por Apple Review, ya que no hay ninguna API privada involucrada en absoluto. Este enfoque es muy similar a la propiedad de creación como
@interface UITextView (diseño)
O
UITextView + Layout.h
Entonces, cuando está creando una propiedad, está utilizando directamente los componentes privados de APPLE y los modula según sus necesidades o requisitos.
El ejemplo simple son las clases de AMFNetworking
- (void)setImageWithURL:(NSURL *)url {
[self setImageWithURL:url placeholderImage:nil];
}
Espero haber terminado con la acusación
La respuesta a continuación fue solo un poco de ayuda de mi parte para permitir que el desarrollador continúe desarrollando, ya que inicialmente propusimos que el desarrollador retrotraiga Xcode. Fue una mala práctica volver a descargar Xcode de 8 GB ya que todos sabemos que la nueva versión de Xcode se lanzará pronto.
Si bien está corregido en Xcode 11.2.1, obtuve una solución para Xcode 11.2 por la cual puede deshacerse de este bloqueo:
*** Finalización de la aplicación debido a la excepción no detectada 'NSInvalidUnarchiveOperationException', razón: 'No se pudo crear una instancia de la clase llamada _UITextLayoutView porque no se encontró ninguna clase llamada _UITextLayoutView; la clase debe definirse en el código fuente o vincularse desde una biblioteca (asegúrese de que la clase sea parte del objetivo correcto) '
SOLUCIÓN
Vaya a la búsqueda de Configuración de compilación para "DEAD_CODE_STRIPPING" y configúrelo en NO
DEAD_CODE_STRIPPING = NO
Entonces
crear archivos 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
ejecutarlo en el delegado de la aplicación
#import "UITextViewWorkaround.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[UITextViewWorkaround executeWorkaround];
return yes;
}
Compila el código y tendrás una aplicación en ejecución :)