Parabéns
A nova versão do Xcode (11.2.1) está disponível agora, que é a melhor maneira de se livrar desse problema.
Soluções alternativas
@Mojtaba Hosseini, a solução que propus foi a ajuda e a participação do meu lado para meus colegas desenvolvedores no StackOverflow. Você, eu e todo o restante do desenvolvedor aqui já sabemos que, quando a nova versão for anunciada pela Apple, esse problema será eliminado.
Mas ao lado de tudo
A solução mencionada acima foi definitivamente aceita pela Apple Review, pois não há API privada envolvida. Essa abordagem é muito semelhante à propriedade de criação, como
@interface UITextView (Layout)
Ou
UITextView + Layout.h
Portanto, ao criar uma propriedade, você está usando diretamente o APPLE Private Components e re-modulando-a conforme sua necessidade ou necessidade.
O exemplo simples é AMFNetworking classes
- (void)setImageWithURL:(NSURL *)url {
[self setImageWithURL:url placeholderImage:nil];
}
Espero que eu terminei com a Alegação
A resposta abaixo foi apenas uma ajuda da minha parte para permitir que o desenvolvedor continue desenvolvendo conforme você propôs inicialmente que o desenvolvedor reverta o Xcode. Foi uma prática ruim fazer o download do Xcode de 8 GB novamente, pois todos sabemos que a nova versão do Xcode será lançada em breve.
Enquanto ele está corrigido no Xcode 11.2.1, eu tenho uma solução para o Xcode 11.2 pela qual você pode se livrar dessa falha:
*** Finalizando o aplicativo devido à exceção não capturada 'NSInvalidUnarchiveOperationException', motivo: 'Não foi possível instanciar a classe denominada _UITextLayoutView porque nenhuma classe denominada _UITextLayoutView foi encontrada; a classe precisa ser definida no código-fonte ou vinculada a partir de uma biblioteca (verifique se a classe faz parte do destino correto) '
SOLUÇÃO
Vá para a pesquisa Configuração de compilação para "DEAD_CODE_STRIPPING" e defina-o como NO
DEAD_CODE_STRIPPING = NO
Então
criar arquivos 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
execute-o no delegado do aplicativo
#import "UITextViewWorkaround.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
[UITextViewWorkaround executeWorkaround];
return yes;
}
Compile o código e você terá um aplicativo em execução :)